使用冒号错误扩展索引表达式:变量,例如集合规范的那部分

时间:2014-11-18 06:39:14

标签: variables colon ampl gurobi

我试图弄清楚为什么我在我的一个约束中得到这个错误。

该行如下:

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使用特定机器/资源,在该操作完成处理之前不得开始其他操作。

1 个答案:

答案 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