我试图弄清楚为什么我在我的一个约束中得到这个错误。
该行如下:
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;
这几乎是说二进制变量&#34;操作&#34; = 1,这意味着操作在给定时间t使用特定机器/资源,在该操作完成处理之前不得开始其他操作。
答案 0 :(得分: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 formulation。