GAMS- 不受控制的集合作为常量输入
GAMS- uncontrolled set entered as constant
考虑 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
考虑 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