情况是:我在gams中定义一个集合,例如:
设置n / n1 * n100 /;
稍后在代码中,我想找到一种方法来决定一个元素是否在一个集合中。例如,我想要一个函数f,例如
(1)如果集合中的元素,则返回true(或'1')。比如,f('n1',n)= true(或'1')
(2)如果一个元素不在一个集合中,则返回false(或'0')。比如,f('n111',n)= false(或'0')
有谁知道是否存在这种扭曲的功能?此外,如果存在,它是否也适用于多维集?
答案 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")
按照您的意愿行事。
如果没有更明确的问题,除此之外很难提供帮助。