数理最適化セミナーのご案内

7.5 必要資源クラスResourceRequire

 各モードに対する必要資源の量はResourceRequireクラスで設定します.ResourceRequireはrcpsp利用時に必要な定数の一つです.モード集合が引数modeで,資源集合が引数resourceで与えられます.また,モード開始時からの経過時間を表す経過時間集合が引数durationで与えられます.これら3つの引数は全て指定する必要があります.

 次の例では,モード集合M,資源集合R,経過時間集合Dに対する必要資源reqを定義しています.

Set M; // モード集合
Set R; // 資源集合
Set D; // 経過時間集合
ResourceRequire req(mode = M, resource = R, duration = D);

 次の例では,モードaonly, bonly, bothそれぞれに対して必要な資源a, bを定めています.モードは全て期間1で終わり,モードaonlyは資源aが1期間,モードbonlyは資源bが1期間,モードbothは資源a, bの両方が1期間必要であることを示しています.

Set M = "aonly bonly both";
Set R = "a b";
Set D = "1"
ResourceRequire req(mode = M, resource = R, duration = D);
req["aonly, a, 1"] = 1;
req["aonly, b, 1"] = 0; // 記述しなくても良い
req["bonly, a, 1"] = 0; // 記述しなくても良い
req["bonly, b, 1"] = 1;
req["both, a, 1"] = 1;
req["both, b, 1"] = 1;

 必要資源ResourceRequireの値は,何も設定しない場合0が設定されます.上記の例では,特に設定する必要の無い行が二行あります.

 初期設定値を0以外の値にするには,引数defaultvalを用います.次の例では,初期設定値を1にしているため,上記の例で0を設定していた箇所のみ設定する必要があります.

Set M = "aonly bonly both";
Set R = "a b";
Set D = "1"
ResourceRequire req(mode = M, resource = R,
  duration = D, defaultval = 1); // 初期値を1にした
req["aonly, b, 1"] = 0;
req["bonly, a, 1"] = 0;

 次の例では,モードaonlyは資源aが3期間,モードbonlyは資源bが3期間,モードbothは資源a, bの両方が1期間必要であることを示しています.

Set M = "aonly bonly both";
Set R = "a b";
Set D = "1 2 3" // 期間を表す
Element i(set = D);
ResourceRequire req(mode = M, resource = R, duration = D);
req["aonly, a", i] = 1, 1 <= i <= 3;
req["bonly, b", i] = 1, 1 <= i <= 3;
req["both, a, 1"] = 1;
req["both, b, 1"] = 1;

 

 

上に戻る