【发布时间】:2022-01-31 16:42:56
【问题描述】:
我有一个 set d /NYCHI, NYBOS, NYDC, CHINY, BOSNY, DCNY / 这是从起点到目的地之间的旅行集:纽约到芝加哥,纽约到波士顿,纽约到DC,以及反向行程。
我有一个变量 b,这是我为旅行做准备所需的预算。我想添加一个约束,设置我从纽约到芝加哥的旅行所需的预算等于从芝加哥到纽约的旅行;等等(所以基本上旅行的方向不会影响预算)。所以我在 GAMS 中使用 2 个参数,即在集合 d 上定义的起点和终点(NY 为 1,芝加哥为 2,波士顿为 3,DC 为 4)。
Set d /NYCHI, NYBOS, NYDC, CHINY, BOSNY, DCNY /;
Alias(d,dd);
Parameter
origin(d) origin of trip
/NYCHI 1, NYBOS 1, NYDC 1, CHINY 2, BOSNY 3, DCNY 4/
destination(d) destination of trip
/NYCHI 2, NYBOS 3, NYDC 4, CHINY 1, BOSNY 1, DCNY 1/;
所以我的约束是:
constraint1(d)$(origin(d)=destination(dd) and origin(dd)=destination(dd)).. b(d) =e= b(dd);
但是这样做我得到了错误 149:不受控制的集合输入为常量。我在这里做错了什么?任何帮助是极大的赞赏!谢谢!
【问题讨论】:
标签: conditional-statements alias gams-math