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

7.4.1 先行制約,直前先行制約

 先行制約とは,ある作業が必ず別の作業より先に実施されていなければならない,という制約のことです.先行制約は,アクティビティActivity間の不等式<で表現されます.次の例では,作業aは作業bに優先することを記述しています.

Set A = "a b c d";
Activity x(index = i, mode = M);
x["a"] < x["b"];

 先行制約の後ろには,条件式を付ける事もできます.次の例では,作業a, b, cは作業dに優先することを記述しています.

Set A = "a b c d";
Activity x(index = i, mode = M);
x[i] < x["d"], i != "d";

 先行制約の後ろには,先行する期間を定数Parameterで指定できます.以下の例では,作業aは作業bに2期間先行することを記述しています.

Set A = "a b c d";
Activity x(index = i, mode = M);
Parameter p = 2;
x["a"] < x["b"], p;

 簡略して,次のように書くこともできます.

x["a"] < x["b"], 2;

 直前先行制約は,特定の資源を消費する状況ではある作業が別の作業の直後に来る,という制約を表現します.直前先行制約は,アクティビティActivity間の不等式<<で表現されます.直前先行制約は,完了時刻最小化問題でのみ使用することができます.

 次の例では,作業a, bいずれも資源Xを用いる場合(どちらも資源Xが必要なモードを取得した場合)には作業aは作業bに優先することを記述しています.

x["a"] << x["b"], "X";

 

 

上に戻る