1

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)は範囲外なので、問題を解決できません。

ありがとうございました

4

2 に答える 2

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)) ;
于 2018-06-08T23:23:30.097 に答える