如何确定元素是否在GAMS中的集合中

时间:2017-11-10 23:53:10

标签: gams-math

情况是:我在gams中定义一个集合,例如:

设置n / n1 * n100 /;

稍后在代码中,我想找到一种方法来决定一个元素是否在一个集合中。例如,我想要一个函数f,例如

(1)如果集合中的元素,则返回true(或'1')。比如,f('n1',n)= true(或'1')

(2)如果一个元素不在一个集合中,则返回false(或'0')。比如,f('n111',n)= false(或'0')

有谁知道是否存在这种扭曲的功能?此外,如果存在,它是否也适用于多维集?

1 个答案:

答案 0 :(得分:1)

问题是你想做什么有点不清楚。话虽如此,子集似乎可以满足您的需求,例如:

set m /n1*n100/;
set n(m) /n1*n50/;
parameter test(m);
test(m)=0;
test(n)=1;
display test;

这是过于明确的,例如,您不需要test(m)=0;,因为gams默认值为0。

这样您就可以使用param(m)$test(m) = 3;来设置测试为正的值。 当然,使用param(n) = 3

要简单得多

最后,严格来说,说明: sameas(set1,set2) sameas(set1,"n101") 按照您的意愿行事。

如果没有更明确的问题,除此之外很难提供帮助。