在OPL中使用有条件的Forall时出错

时间:2019-03-25 15:39:31

标签: optimization cplex opl

使用该约束时,OPL模型出现错误:

forall (j1,j2 in p: row[j1]==row[j2] && j1<j2) 

其中row是变量:

dvar int row [p];

错误是这样的:

Decision variable row not allowed. 

我不知道为什么这不可能,但是如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

条件切片应绑定,并且不应包含任何决策变量。 您应该依靠逻辑约束:

range p=1..4;

dvar int row[p] in p;

subject to
{
 forall(j1,j2 in p) ((row[j1]==row[j2] ) => (row[j1]>=2));
}

工作正常

致谢