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;
集合の要素が文字列である場合は,ダブルクォート"
で囲む必要があります.
上に戻る