在变量表达式中使用 if else(d)

Using if else in Variable expressions(d)

假设我的 OPL 中有以下决策表达式 code.I 需要获取 z 的值..Z 正在计算决策变量 na_pur_req[i,j](二维数组 - 1 行和 12 列)。我只需要获取特定值的总和。(示例 - J=2 到 j=12)。所以我使用了 if else 三元运算符作为 follows.But 它提供一个错误 "Cannot use type int for booleans"。 1.Could你支持我为什么会出现这个错误。 2.Is 我可以通过任何方式在 dexpr 语句中使用 If else 函数。

dexpr int z=sum(i in 1..1,j in 1..12) (j>1) ?na_pur_req[i,j] : 0 ;

我不确定你的表达式有什么问题,但无论如何你都可以通过更简单的方式实现你的目标:你可以过滤已经在总和中的 j 个值:

sum(i in 1..1, j in 1..12 : j > 1)

有了这个,您的总和将只选择所需的决策变量,总和中不需要有 0 个项。

你可以使用切片

range I=1..2;
range J=1..12;


dvar int na_pur_req[I,J] in 1..10;
dexpr int z=sum(i in 1..1,j in 1..12:j>1) na_pur_req[i,j] ;

minimize z;

subject to
{

}

工作正常