最適化セミナーのご案内

6.8 ブール関数Boolean

 ブール関数Booleanは,引数に与えた制約式に対して,その真偽を判定し0(偽の場合)か1(真の場合)を返す関数です.

Boolean(制約式); //  0か1を返す

 次の例では,定義域が1から4の離散変数x[1],...,x[10]を考えます.以下の式は,x[1],...,x[10]の中で,3より大きい値を取る事ができるのは,最大でも一つであることを示しています.

Set S="1 .. 10";
Set T="1 2 3 4";
Element i(set=S);
DiscreteVariable x(dom=T, index=i);
sum(Boolean(x[i] >= 3),i) <= 1;

 次の例では,3人の工員ryu, ken, guyに割り振られる仕事a, b, c, d(離散変数x[a], x[b], x[c], X[d])を定義し,kenに割り振られる仕事の数は2つであると定めています.

Set Workers="ryu ken guy";
Set Tasks="a b c d";
Element j(set=Tasks);
DiscreteVariable x(dom=Workers, index=j);
sum(Boolean(x[j] == "ken"),j) == 2;

 集合の要素が文字列である場合は,ダブルクォート"で囲む必要があります.


 

 

上に戻る