在变量表达式中使用 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
{
}
工作正常
假设我的 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
{
}
工作正常