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

问题描述 投票:0回答:1

想象一下,在我的OPL代码中,我有下面的决策表达式,我需要得到z的值,Z是计算决策变量na_pur_req[i,j](2d数组-1行& 12列)元素的和,我只需要得到特定值的和(例如- J=2到j=12).所以我使用了if else三元运算符,如下所示.但它提供了一个错误 "Cannot use type int for booleans".1.你能支持我为什么这个错误吗? .有没有什么方法可以让我在dexpr语句中使用if else函数。

dexpr int z=sum(i in 1..1,j in 1..12) (j>1) ?na_pur_req[i,j] : 0 ;
cplex opl
1个回答
1
投票

你可以使用切片

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
{

}

行得通


1
投票

我不知道你的表达方式有什么问题,但无论如何,你可以用一种更简单的方式来实现你的目标:你可以过滤和中已有的j值。

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

这样一来,你的总和就会只选取所需的决策变量,而不需要在总和中加入0项。

© www.soinside.com 2019 - 2024. All rights reserved.