数理最適化セミナーのご案内

6.8 ブール関数Boolean

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

 なお,macOS版Nuorium Optimizerではブール関数には対応していません.

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;

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


 

 

上に戻る