0

チョコソルバー初心者です。シンプルなシフトスケジューラーを作りたいです。私はこのような整数変数を設定しました

IntVar day1 = model.intVar("day1", new int[] {0,1,2,3,4,5});  

ここで、 0 、1、...5 は従業員への参照 ID です。

これは毎月ベースのシフト スケジュールであるため、合計 30 個の変数 (毎月の日付に 1 つ) があります。たとえば、2 日間連続してシフトに入れないなどの制約を設定しました。

私の質問は、各雇用主が最低 5 つのシフトを持つように、どのように制約を設定できるかということです。ドメイン内の各値は、30 個の変数すべてで少なくとも 5 回出現しますか?

ありがとうございました!

4

1 に答える 1

1

これにはいくつかの方法があります。model.globalCardinality と model.count を見てください。これらの制約により、一連の変数によって値が使用される回数をカウントできます。

http://choco-solver.org/apidocs/org/chocosolver/solver/constraints/IConstraintFactory.html

たとえば、model.count(3, vars, model.intVar(5,10)).post(); vars の 5 ~ 10 個の変数が 3 に等しいことを意味するため、従業員 3 は 5 ~ 10 回のシフトを行う必要があります。

于 2016-08-10T10:05:36.540 に答える