1

您好我正在尝试优化一个函数,该函数涉及由集合 L /1*10/ 索引的变量 s(L) 的组件;

我创建了包含偶数的集合 L 的子集 Leven (Leven /2,4,6,8,10/)

我想写下一个方程,它将 s(L) 的偶数分量设置为奇数分量值的两倍。

请问我应该怎么写这样的方程?

我打算把它写成

方程(Leven).. s(Leven) =E= s(Leven-1)*2;

然而,以上是错误的,例如对于 Leven = 4,s(Leven-1) 被解释为 s(2) 而不是 s(3) ..

非常感谢

4

1 回答 1

1

您可以使用美元条件将方程限制为您的子集,如下所示:

set Leven(L);
Leven(L) = yes$(mod(ord(L),2) eq 0);

equation(L)$Leven(L).. s(L) =E= s(L-1)*2;

(我不能 100% 确定用于定义上述子集的语法,因为我正在度假并且没有 GAMS,但你应该明白这一点。)

于 2016-12-28T09:09:38.957 回答