【发布时间】:2020-10-20 11:26:36
【问题描述】:
考虑 GAMS 中的以下集合和参数:
set i / 1,3 /
j / j1,j2,j3 /;
parameter stock(i,j);
考虑我想在参数中放入一个特定的值:
stock("1","j1") = 10;
stock("3","j3") = 10;
我可以使用宏、$setGlobal、循环(或类似的)来代替两行写,首先 (1) 指定它应该为哪个集合执行,然后 (2) 其次只在一行中写方程?
我可以创建一个子集:
set subset_i(i) / 1,3/
subset_j(j) / j1,j3 /;
然后循环遍历这些子集:
loop(subset_i,
loop(subset_j,
stock(i,j) = 10;
);
);
然后我得到每个组合的值:
1 j1 10
1 j2 10
1 j3 10
3 j1 10
3 j2 10
3 j3 10
我只想要:
1 j1 10
3 j3 10
我该怎么做?
【问题讨论】: