2017-11-15 43 views
0

hereの看護師のスケジューリングの例に続いて、問題にさらに制約を加えようとしています。たとえば、看護師Aは月曜日に2と3のシフトを行うことはできませんが、看護師Bは1日と3日だけシフトすることができます。Google OR Tools:従業員スケジューリング(可用性制約あり)

このような制約を実装するにはどうすればよいですか?

ORツールでは不可能な場合は、このような方法を実装する方法を提案してください。あなたの例については

答えて

1

、あなたがする必要があるすべては、その特定看護師に割り当てられているからシフトを防ぐ制約を追加です:

より一般的に
solver.Add(shifts[(2, 1)] != 3) # Nurse 2 cannot be assigned shift 3 on day 1 

お勧めします明らかに
solver.Add(shifts[(j, i)] != n) # Nurse j cannot be assigned shift n on day i 

これをループで実行して、可能であれば単純化します。

+0

ありがとうございます!それは働いた、それがとても簡単だったことを知らなかった。そして、ここで私は 'MakeLessThanOrEqualTo'のようなものについてC++のドキュメントを掘り下げていました –

関連する問題