rcpsp30.py
次はプッシュ型とプル型の結果を比べる簡単なプログラムですが、データセットの定義、アクティビティの定義(プッシュ型)、モードの付与(作業期間の指定)、求解からなる構成が見てとれます。
|
|
これを実行すると次を得ます。
【rcpsp30.txt】
|
|
納期日を10日とするプル型の結果を得るときは、
|
|
とします。納期日の前日まで作業を終わりたいので、duedateは納期日の前日としています。これを実行すると次を得ます。
【rcpsp30.txt】
|
|
rcpsp31.py
次はRCPSP法のプログラムの基本的な枠組みを示すプログラムで、アクティビティに先行制約が、モードに資源制約が組み込まれています。
|
|
データセットはPythonの辞書データとしています。keyでアクティビティを識別し、名前、作業期間、後続作業のリスト(後続がないときは0)、必要とするリソースなどからなるリストを対応させています。
|
|
データセットで定義された2つのアクティビティ(製作作業と納品作業)を定義しています。プル型のduedateは、2つとも納品作業のものを用いています。次に定義する先行関係があるので、納品作業は必ず製品作業が終わってから行うことになります。
|
|
プッシュ型計画を行うことも想定して、納期日は固定しています。これは2つの不等式
が成り立つ(は完了日)、すなわち
を要求しているからです。
|
|
リソースのキャパシティは1です。各アクティビティについてモードは1個です。各モードは名前で区別します。
|
|
これを実行すると次の結果を得ます。
【rcpsp31.txt】
|
|
上のプログラムは、プッシュ型かプル型か、評価関数はメイクススパンか納期遅れ総和かで、4通りの実行ができます。それぞれの目的関数の値を確かめると参考になるかと思います。
rcpsp32.py
例題1をRCPSP法で解くプログラムを次に示します。
|
|
10個のアクティビティについてデータが定義されています。
|
|
プッシュ型の計画が想定されています。
|
|
先行関係は13個あります。
|
|
リソースのキャパシティは10です。各アクティビティについてモードは1個です。
|
|
これを実行すると次の結果を得ます。
【rcpsp32.txt】
|
|