modeling - 在 GAMS 中创建具有移动索引间隙的变量的方程求和
问题描述
我想在游戏中添加一个约束,该约束对一个变量求和,该变量采用索引之间的变化间隙。例如,我在一年中有一组小时 (h)。我的变量是 g(h)。我想要的方程式是:
g(1) + g(2) + g(3) = 0
g(3) + g(4) + g(5) = 0
g(5) + g(6) + g(7) = 0
因此,每三个连续的 g(h) 求和,但每次移动 2 个索引。有没有办法做到这一点?谢谢
解决方案
干得好:
Set i /i1*i10/;
Alias (i,ii);
Variable z, g(i);
Equation dummy, e(i);
dummy.. z =e= 1;
e(i)$(mod(ord(i),2)=1).. sum(ii$((ord(ii)>=ord(i) and (ord(ii)<=ord(i)+2))), g(ii)) =e= 0;
option LimRow = 10;
model m /all/;
solve m min z use lp;
这将导致以下解决方案列表:
---- e =E=
e(i1).. g(i1) + g(i2) + g(i3) =E= 0 ; (LHS = 0)
e(i3).. g(i3) + g(i4) + g(i5) =E= 0 ; (LHS = 0)
e(i5).. g(i5) + g(i6) + g(i7) =E= 0 ; (LHS = 0)
e(i7).. g(i7) + g(i8) + g(i9) =E= 0 ; (LHS = 0)
e(i9).. g(i9) + g(i10) =E= 0 ; (LHS = 0)
推荐阅读
- python - 在 django 模型中为标签字段编写验证器
- c++ - 如何打印作为参数传递的函数名称?
- html - 2 个不同的动画不能在 1 个组件上一起工作
- javascript - 需要从键值搜索中删除两个引用
- python - 如何将遮罩应用于张量并保持其原始形状
- java - 无法使用 java 在 db2 中为 SEQ 插入 Nextval
- amazon-web-services - AWS API Gateway Websocket UnknownError
- python - 在非空行上过滤数据框
- sql-server - 选择与选择与 CTE - 性能
- deep-learning - 如何在 pytorch 代码中的 ResNet 中进行下采样?