1

制約の 1 つでこのエラーが発生する理由を理解しようとしています。

行は次のとおりです。

subject to resource1{t in time: operation[1,1,t]= 1}:
    sum {p in plane, m in t..(t+process_time[p,1])} 
         (operation[p,1,m] + operation[p,8,m]) <= 1;

これは、バイナリ変数「操作」が 1 であるすべての時間について、つまり操作が特定の時間 t に特定のマシン/リソースを使用していることを意味し、その操作の処理が完了するまで、他の操作を開始してはならないことを示しています。

4

1 に答える 1

1

AMPL のインデックス式では変数を使用できません。CPLEX を使用している場合は、代わりにこれを指標制約として定式化できます。

subject to resource1{t in time}:
    operation[1,1,t] = 1 ==> sum {p in plane, m in t..(t+process_time[p,1])} 
         (operation[p,1,m] + operation[p,8,m]) <= 1;

または、ある種のBig M フォーミュレーションを使用することもできます。

于 2014-12-11T01:42:16.943 に答える