排除 GAMS 中的某个元素集

excluding a certain element set in GAMS

在这种情况下:

sets
m /m1*m5/
v /v1*v4/

我只想对特定变量使用从“v1”到“v3”的元素:

positive variables
Q(m,v)
R(m,v)

并且在下面的objective函数或方程中,这些变量被计算为刚排除的元素。

我的意思是Q(m,v)包括“v1”、“v2”和“v3”;和 R(m,v) 包括“v4”。

obj .. Q(m,v) + R(m,v)

eq1(m) .. sum(v, Q(m,v))
eq2(v) .. sum(m, Q(m,v) + R(m,v))

如何在 obj 和 eq1 的变量中排除元素“v4”?

有几种方法可以实现,但这很好:

1- 您可以通过定义允许元素的 sub-set 来排除变量,例如:

套 v2(v) /v1*v3/

2- 然后,在定义方程式时,您可以如下定义这些方程式,以便仅包含先前定义的 sub-set 中的元素。

方程式 R1(m,v); R1(m,v)$v2(v)..#方程式

这样,变量 v4 就不会永远包含在任何变量中。您也可以在等式、求和或 objective 函数中使用该条件格式。您还可以将相反的变量固定为 0,例如 Q.fx(m,v)$(not v2(v))=0;

当然,您可以在 .LST 文件中检查它是否正确运行。