import sc3 #定義されているすべてのタスクの出力 for タスク名 in taskdef.keys():#taskdefは、辞書 sc3.print(タスク名+'の工程担当能力のあるのは次の人達です。\n') for 人 in taskdef[タスク名]: sc3.print(staffdef[人]+'\n') #定義されているすべてのシフトの出力 for シフト名 in shiftdef.keys():#shiftdefは、辞書 sc3.print(シフト名+'がありえるのは次の人達です。\n') for 人 in shiftdef[シフト名]: sc3.print(staffdef[人]+'\n')これは、次のpythonファイル プロジェクト名_property.py(プロジェクトファイルフォルダーに出力) で定義されている為です。暗黙のうちにインポートされています。ファイルは、reference only用です。
公休=[0,1,2,3,4] 勤務1=[0,1,2,3,4] 勤務2=[0,1,2,3,4] 勤務3=[0,1,2,3,4] 勤務4=[0,1,2,3,4] 年休=[0,1,2,3,4] 統括作業長=[4] 作業長=[0,1,2,3,4] ... #shiftdef shiftdef={'公休':公休,'勤務1':勤務1,'勤務2':勤務2,'勤務3':勤務3,'勤務4':勤務4,'年休':年休} #taskdef taskdef={'統括作業長':統括作業長,'作業長':作業長,...
解のログです。
コンパイルの準備中ソルバを呼び出し中です。 統括作業長の工程担当能力のある人は次の人達です。 スタッフ5 作業長の工程担当能力のある人は次の人達です。 スタッフ1 スタッフ2 スタッフ3 スタッフ4 スタッフ5 ... NoTaskVarの工程担当能力のあるのは次の人達です。 スタッフ1 スタッフ2 スタッフ3 スタッフ4 スタッフ5 公休がありえるのは次の人達です。 スタッフ1 スタッフ2 スタッフ3 スタッフ4 スタッフ5 勤務1がありえるのは次の人達です。 スタッフ1 スタッフ2 スタッフ3 スタッフ4 スタッフ5
これで、任意のタスク変数、シフト変数をPython上で呼ぶことが出来るようになりました。 シフト変数は、リニアにアサインされているので、リニアに数字インデックスでアクセスできます。 それに対して、タスク変数は、Phaseに対して、Person毎に異なるインデックスになります。それ故、 タスク変数は、リニアにアクセスすることは出来ず、定義されたタスクだけにアクセスすることができます。 (Person毎に担当できる工程は変わり、しかもその工程は何十もあるので、リニアアクセスにするのは、メモリ的に 非効率です。) そのために、Dictionaryを用いてstringで、上のようにタスクを指定する必要があります。
0 件のコメント:
コメントを投稿