首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lingo中的线性规划

Lingo中的线性规划
EN

Stack Overflow用户
提问于 2015-06-16 20:12:50
回答 2查看 618关注 0票数 1

我想用Lingo做一个线性规划,我有解决方案,但我想改进代码。

这是我想要做的:

代码语言:javascript
复制
SETS:
 SEMANA/ 1..12/: D, X, I, Y, Z, R, n;
ENDSETS

X(1)>=D(1); 

X(2)+I(1)>=D(2);

X(3)+I(2)>=D(3);

X(4)+I(3)>=D(4);

X(5)+I(4)>=D(5);

X(6)+I(5)>=D(6);

X(7)+I(6)>=D(7);

X(8)+I(7)>=D(8);

X(9)+I(8)>=D(9);

X(10)+I(9)>=D(10);

X(11)+I(10)>=D(11);

X(12)+I(11)>=D(12);

我已经尝试过这个选项,但有一个错误:属性I的下标超出范围。

代码语言:javascript
复制
@FOR (SEMANA(j): 

X(j)+ I(j-1)>= D(j)) ; 

I(j-1)超出范围,因此我无法解决此问题。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2016-03-03 21:13:38

请注意,当j=1. I(0)未定义时,您的代码将尝试进入I(0),这就是它出现范围外问题的原因。

票数 0
EN

Stack Overflow用户

发布于 2018-06-09 07:23:30

你需要一个索引过滤器

代码语言:javascript
复制
@FOR (SEMANA(j) | j#GT#1: 
  X(j)+ I(j-1)>= D(j)) ;

这等同于I(0)=0,但只是隐式的。如果你有I(0)>0,例如你有正的初始库存,那么你将需要扩展你的索引集合以包括'0‘,并添加一个额外的约束I(0)=INITIAL_VALUE

因此,您的@for循环必须是

代码语言:javascript
复制
@FOR (SEMANA(j) | j#GT#0: 
  X(j)+ I(j-1)>= D(j)) ;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30867261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档