Q.週休は、任意の1週間区間で見た場合、必ず1回以上含まれる必要があります。どのように記述したらよいでしょう?
Ans.
貴職場の場合、別に6連勤務禁止、という制約があります。この制約は、上記より上位の制約になります。任意の1週間区間で見た場合、必ず1回以上含まれる⇒7日週休無は禁止ということです。6連続週休無禁止は、7日週休無禁止を必ず含みます。よって、6連続週休禁止とすれば十分です。
実装は次になります。6日連続週休なし禁止です。
2行目の記述は、このパターンに対する特殊ケースの記述です。入り後は、必ず明けとなることに注意します。制約最終日に入りが来た場合は、翌月1日は、必ず明けとなるので、連続週休無4日で切らないといけないことに注意してください。
次に、間違えている実装例を示します。
1)「休集」だと、必ずしも週休を意味しません。仕様は、任意の1週間区間で、必ず週休が1個含まれる、です。この実装の場合、週休が1回も含まれないことがあり得ます。
2)Day集合がいずれも正しくありません。(前日のブログをご参照ください)
3)防止パターンの最後に規定がないので、解空間の減少が懸念されます。防止パターンが必要なのは、制約最終日だけなので、パターン最後の曜日タイプに「制約最終日」を記述してください。
0 件のコメント:
コメントを投稿