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";
上に戻る