如何在gams中设置集合的所有元素的上限

How to set an upper bound over all elements of a set in gams

我一直在尝试做下面的代码,它试图将集合 J 的每个元素的上限设置为 3。

set J /a1, a2, a3/;
positive variables b(J);
variable obj;

equations cons1, goal;

cons1..
b.up(J) =e= 3;

GAMS 代码的其余部分只是运行模型。但是,生成的错误语句显示 "Uncontrolled set entered as constant"。我也试过 "b.up(J) = 3;" -- 遇到同样的问题。有谁知道如何解决这个问题?这个问题类似(),但实际上不是我的解决方案。

您可以通过两种方式定义上限:公式化或使用 .up 后缀。您混合了导致问题的两种方式。

这是第一种方式,定义一个方程:

Equation cons1(J);
cons1(J)..
b(J) =l= 3;

如果你使用后缀方法(这是更好的方法),你不应该使用方程式,只需这样做:

b.up(J) = 3;