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



>想象一下,我的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 项。

最新更新