如何根据 OPL 中的其他变量声明表达式数组

How to declare an expression array in term of other variables in OPL

这是我的代码:

range products = 1..5;

// Variables
dvar float+ P;
dvar float+ Q;

// Expressions
dexpr float produced[products] = [P, Q, P, P+Q, P+Q];

问题是我无法使用 produced 表达式,因为出现错误:

Index out of bound for array "produced": p.

每当我尝试使用表达式 produced[p] 时,其中 p1..5 中的一个数字。

我知道我可以使用语法 dexpr float product[p in products] = (some math expression using p); 创建表达式数组,但我想在我的代码中使用上面的形式。表达式似乎不允许使用此语法,是否有解决方法?

range products = 1..5;

// Variables
dvar float+ P;
dvar float+ Q;

int coefP[products]=
[1,0,1,1,1];
int coefQ[products]=
[0,1,0,1,1];
// Expressions
dexpr float produced[p in products] = coefP[p]*P+coefQ[p]*Q;



subject to
{
  produced[1]==3;
}

工作正常