在GAMS中,如何用参数替换索引?

时间:2018-05-19 19:46:47

标签: gams-math

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不喜欢它,并说它期望一组。

我该怎么做?

2 个答案:

答案 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";