2017-04-04 11 views
0

は私が項目から長さを取得するには、

set IL = setof {i in items, (i,l,w,h) in itemData} (i,l); #length of item i 

は、この方法しかありません次のコードを使用して、各項目の長さを取得しようとしています

# Input Data for items in the format (i,l,w,h) 
i for item, l for length , w for width, h for height 
set itemData := 
271440 290 214 361 
1504858 394 194 114 
4003733 400 200 287 
4012512 396 277 250 
4013886 273 221 166; 

この形式でのデータのセットを持って設定します個々の商品の長さにアクセスすることはできません。 私は何をしようとしています

ディスプレイIL [271440] = 290;

どうすればいいですか?

答えて

0

用語には注意してください。 AMPLの用語では、そのテーブルは「セット」ではありません。 のテーブルがあります。あなたのセットは、そのテーブルの行と列のインデックスで、列の{"l"、 "w"、 "h"}、行の項目ID番号です。あなたはその後、行うことができます

(.mod part) 
set items; 
set attributes := {"l","w","h"}; 
param itemData{items, attributes}; 
(.dat part) 

set items := 
271440 
1504858 
4003733 
4012512 
4013886 
; 

param itemData: l w h := 
271440 290 214 361 
1504858 394 194 114 
4003733 400 200 287 
4012512 396 277 250 
4013886 273 221 166 
; 

:それはこのようなものを処理されるAMPLで

私はそれがITEMDATAと同時にセット「アイテム」を定義することは可能だと思う

ampl: display itemData[271440,"l"]; 
itemData[271440,'l'] = 290 

とID番号を複製する必要はありません。 AMPL Bookの第9.2節では、1つのインデックスセットを持つパラメータに対してこれを行う方法を示していますが、上記のように2つのインデックスセットがある場合は、これを行う構文がわかりません。 (もし誰かが分かっていれば、それを加えてください!)

関連する問題