现在,我有了类似于以下示例的 GAMS 代码。语句二进制变量 x(i,j( 表示 GAMS 将使用 index(i,j( 创建一百个变量 x。如何让 GAMS 仅在 are(i,j( 存在时才创建变量 x(i,j( 以减少变量 x 的数量?
set i nodes /1*10/;
alias (i, j);
parameter r(i,j) factor /1.2 1 ...... 7.8 1/;
binary variables x(i,j);
使用变量时需要使用 $-条件。宣言
binary variables x(i,j);
本身不会生成任何变量。它们是在使用时创建的,例如,在方程中。例如,看看这个虚拟方程:
equation dummy(i);
dummy(i).. sum(j, x(i,j)) =l= 5;
正如您所说,这将生成 100 x 变量,但现在让我们使用 $-条件对其进行修改:
dummy(i).. sum(j$r(i,j), x(i,j)) =l= 5;
这将仅创建 are 不为 0 的 x 变量。无论在哪里使用 x,您都必须使用相同的 $-条件。
希望对您有所帮助!卢茨