GAMS:我如何制定约束 $x_{a,i,v+1,l} - x_{a,i,v,l} \leq y_{a,i,v,l}$?

GAMS: How can I formulate the constraint $x_{a,i,v+1,l} - x_{a,i,v,l} \leq y_{a,i,v,l}$?

我在 GAMS 中制定约束时遇到问题。

我的约束如下:

x_{a,i,v+1,l} - x_{a,i,v,l} \leq y_{a,i,v,l}

和 sum(v,y_{a,i,v,l}) \leq 1.

我曾多次尝试制定它,但我认为(我知道)我做错了。

我在 gams 中写成:

con15(a,i,v,l)$(ord(v) lt 17).. x(a,i,v,l)$(ord(v) eq ord(v)+1) - x(a,i,v,l) =l= u(a,i,v,l);

con16(a,i,l)..sum(v, u(a,i,v,l)) =l= 1;

一些额外的信息:

i“员工”/i1*i11/

l“天”/l1*l31/

a“依赖飞行计划的项目”/a1/

v“小时”/v1*v18/

在约束 con15 中,我说它只适用于小于或等于 17 的 ord(v),这是因为我们有 v1 到 v18。

x 和 y 也是二进制的。

当我运行GAMS时,我得到了正常的编译和解决方案。问题是解决方案违反了我的约束条件 con16 和 con15。

我使用的 ord 和 $ 正确吗?

最佳哈士奇

首先,我认为您可以使用 card() 使您的等式 con15 更通用。这告诉您集合中元素的数量。

此外,"lt"表示严格低于。如果你想包括平等,你必须写 "le".

我会试试这个:

con15(a,i,v,l)$(ord(v) lt card(v)).. x(a,i,v+1,l) - x(a,i,v, l) =l= u(a,i,v,l);

con16(a,i,l)..sum(v, u(a,i,v,l)) =l= 1;

希望对您有所帮助。

萨尔瓦。

最近我在自己的一个项目中遇到了类似的问题,我是 GAMS 的新手,但希望这可能会有所帮助:

事实证明,有序集和相加的值并不能很好地相处:尝试将您的问题重新表述为一个方程式,其中包含 v-1 而不是 v+1。有序集从某个起点开始计数(和计算)并计数(和计算)直到定义的终点:将 +1 添加到尚未计算的点会导致我的模型出现问题并且可能对您的模型造成同样的问题。祝你好运!