2016-08-22 7 views
0

IインデックスはAを設定し、別のdimに設定されている、私はi一つからAj開始にあり、各メンバーの<= dim[A]ある変数x[i,j]定義する必要があります。例えばZimplで2次元集合から選択した数の変数を定義する方法は?

set A := { 11 .. 20}; dim := {<11>1, <12>3, <13>1, <14>1, <15>5, <16>1, <17>2, <18>1, <19>1, <20>3};

を、上記では、私が持っています:

x[11,1], x[12,1], x[12,2], x[12,3], x[13,1], x[14,1], ...

私はのような何かを行うことができます:

set B := { 1 .. maxDim)}; var x[A *B]; の中で、maxDimが最大数である。余分な変数をたくさん作成せずにこれをどうやって行うことができますか?

+0

これをZIMPLでは不可能です。 AxBを同じ次元の変数を含むサブセットに分割することをお勧めします。 ZIMPLはあまり動的ではないので、とにかく最大の寸法を知る必要があります。 – Jakob

答えて

0

質問が分かりません。インデックス付きdimlistは何ですか? ディメンションのサイズはどのようになりますか?3.35 これを達成する最良の方法は、完全なディメンションのテーブル を使用し、好きでないディメンションを除外することです。

set I := { <a,b,c,d,e,f> in A*B*C*D*E*F with a > b or whatever restriction you like }; 

var x[I]; 

たりすることができます

var x[<a,b,c,d,e,f> in AxB*D3*D4*D5] real <= (if dimlist[a,b] > 0 ? dimlist[a,b] : 0); 
+0

お返事ありがとうございます!私はその質問を編集した。今それは意味があるのですか? – Pooya

0

のように変数の境界と周りの混乱私は動作するはずだと思うソリューション、見つかったいくつかの研究の後:

var x[ <i, j> in A*B with j <= dim[i]];

関連する問題