【问题标题】:In GAMS, how do I replace an index with a parameter?在 GAMS 中,如何用参数替换索引?
【发布时间】:2018-06-04 18:32:20
【问题描述】:
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 不喜欢它,并说它期望一个集合。

我该怎么做?

【问题讨论】:

    标签: gams-math


    【解决方案1】:

    您可以使用映射: 请参阅下面的示例,该示例将 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";
    

    【讨论】:

      【解决方案2】:

      不确定我是否正确理解了这个问题,但也许你的意思是 x(i) = j(i) ?然后对于 i x 的所有集合元素将采用相同的 j 值。如果您只想要第一个集合元素:x("1") = j("1")。 j("1") = 2,所以 x("1") 也等于 2。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-21
        • 1970-01-01
        相关资源
        最近更新 更多