簡體   English   中英

Lingo中的線性編程

[英]linear programming in Lingo

我想用Lingo進行線性編程,我有解決方案,但我想改善代碼。

這是我想做的:

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的范圍。

@FOR (SEMANA(j): 

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

I(j-1)超出范圍,所以我無法解決問題。

謝謝

請注意,當j = 1時,您的代碼將嘗試進入I(0)。 I(0)沒有定義,這就是為什么它超出范圍的問題。

您需要索引過濾器

@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循環必須為

@FOR (SEMANA(j) | j#GT#0: 
  X(j)+ I(j-1)>= D(j)) ;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM