问题描述
请考虑GAMS中的以下问题。我有两个不相交的集合:
i
和j
。这些是子集k
的适当子集,其中i
和j
的并集完全等于k
的元素。我希望构造一个新变量X({k
)(用于适当的子集),它是A({i
)和B(j
)的串联。直观地说,我想声明:
parameter
X(k);
X(k)=A(i)+B(j);
当然,此操作是不合法的,因为i和j不符合要求。但是,想法是从A(i)取X(k)的i个元素的值,其余取自B(j)。在这方面的任何帮助都非常感谢!
解决方法
这听起来像是隐式集合定义的完美示例。因此,您可以执行以下操作:
Set
k
i(k<) / i1*i3 /
$onMulti
j(k<) / j1*j3 /;
parameter X(k);
检查此以获取更多信息:
https://www.gams.com/32/docs/UG_SetDefinition.html#UG_SetDefinition_ImplicitSetDefinition