总和使用相同的索引

时间:2019-04-09 00:21:21

标签: cplex opl

我试图编写一个简单的约束,但是我可能犯了一个基本的编码错误。我想两次使用相同的索引,但是OPL给我一条错误消息,指出第二个索引不存在。

forall(i in 1..3, t in 10)
   sum(l in 1..2)
     z[i][l][t]+z[i+3][l][t]<=1;

我已经删除了参数的名称,并用值替换了它们,因为我认为这是“语法上的”错误,我不想让这个问题太令人困惑。 OPL强调了我的第二个“ l”索引,并告诉我它不存在。

我希望约束所有[i]的所有[t]的z变量和[l]的和,其中[l]必须是完全相同的值。

编码此约束的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

您应该记住操作员的优先级,并且可以通过括号解决问题。

让我给你举个小例子:

int a=sum(i in 1..2) 1+i;

execute
{
writeln(a);
}

不起作用

但是

int a=sum(i in 1..2) (1+i);

execute
{
writeln(a);
}

工作正常

致谢