1

私は次の2つのセットを持っています:

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];

しかし、私が書いたコードには構文エラーがあります。助けてくれませんか

ありがとう

4

1 に答える 1

0

これを行う 1 つの方法は、セットを次のように宣言し、そのインデックスによってセットの要素に関数をordered使用することです。member

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;
于 2014-11-02T01:04:51.830 に答える