2014-10-31 20 views
1

選擇數據我有兩組分別是:AMPL,從兩組

set s1 := 0 1 5 6 ; 
set s2 := 3 4 8 9 ; 

我需要有其選擇從這些集合象下面的行中的數據的約束:

subject to sym1{i in 0..3 , j in 0..3 : i=j } : x[0,s1[i],0] = x[1,s1[j],0]; 

它裝置從S1和S2選擇數據應該是這樣的: x[0,0,0] = x[1,3,0]; x[0,1,0] = x[1,4,0]; x[0,5,0] = x[1,8,0]; x[0,6,0] = x[1,9,0];

但我寫的代碼有語法錯誤。 請你幫我

感謝

要做到這一點是通過聲明集作爲 ordered和它的索引使用 member功能的集合中的元素

回答

0

方式一:

set s1 ordered := {0, 1, 5, 6}; 
set s2 ordered := {3, 4, 8, 9}; 

subject to sym1{i in 1..4}: x[0, member(i, s1), 0] = x[1, member(i, s2), 0]; 

另外,你可以用參數代替套件:

param s1{1..4}; 
param s2{1..4}; 

subject to sym1{i in 1..4}: x[0, s1[i], 0] = x[1, s2[i], 0]; 

data; 

param s1 := 
1 0 
2 1 
3 5 
4 6; 

param s2 := 
1 3 
2 4 
3 8 
4 9; 
+0

謝謝你的幫助。 – Mohammad 2014-11-04 15:30:00