>想象一下,我的OPL代码中有以下决策表达式。我需要获取 z 的值。Z 计算决策变量 na_pur_req[i,j](2d 数组-1 行和 12 列(元素的总和。我只需要获得特定值的总和。(例如 - J=2 到 j=12(。所以我使用了 if else 三元运算符,如下所示。但它提供了一个错误,即"不能将 int 类型用于布尔值"。 1.你能支持我为什么这个错误吗? 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 ;
你可以使用切片
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
{
}
工作正常
我不确定您的表达式有什么问题,但无论如何您都可以以更简单的方式实现目标:您可以过滤总和中已有的 j 值:
sum(i in 1..1, j in 1..12 : j > 1)
这样,您的总和将仅选取所需的决策变量,并且总和中不需要有 0 项。