如何根据 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]
时,其中 p
是 1..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;
}
工作正常
这是我的代码:
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]
时,其中 p
是 1..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;
}
工作正常