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;

或者,您可以使用某种大 M 公式

于 2014-12-11T01:42:16.943 回答