[英]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.