Sets
i / 1, 2 /;
Parameters
j(i) / 2, 1 /;
Variables
x(i);
所以,这里我有一个索引i,一个依赖于i的参数,它给出与i相同的值,以及一个依赖于x的变量。
如果我想获得x(2),我当然可以写x(2),但如果我想写x(j(1))该怎么办。由于j(1)= 2,这应该是相同的,但是GAMS不喜欢它,并说它期望一组。
我该怎么做?
答案 0 :(得分:0)
不确定我是否正确理解了这个问题,但也许你的意思是x(i)= j(i)?然后对于i x的所有设置元素将采用相同的j值。如果您只想要第一个设置元素:x(“1”)= j(“1”)。 j(“1”)= 2,所以x(“1”)也等于2。
答案 1 :(得分:0)
您可以使用映射: 参见下面的例子,它使用映射j将x(1)映射到P(2)和x(2)映射到P(1),映射j映射1到2和2到1。
Set i / 1, 2 /;
alias(k,i);
set j(i,k) /
1.2
2.1
/;
parameter P(i);
P("1") = 10;
P("2") = 20;
Variables
x(i);
loop(j(i,k), x.l(k) =P(i));
execute_unload "test.gdx";