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

how to decide if a element is in a set in GAMS

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

设置n/n1*n100/;

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

(1) 如果集合中的一个元素,它 returns 为真(或“1”)。比如,f('n1',n) = true(or '1')

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

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

问题有点不清楚你想做什么。话虽这么说,子集似乎是一个做你想做的事,例如:

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")随心所欲

如果没有更明确的问题,就很难提供超出这一点的帮助。