2. 6 制約を一時的に外す方法


制約を一時的に外す方法はありません。考え方としては、一時的な制約 というよりは、ロバストな制約化を心がけて記述することです。

月々の変更要求に対しても対処可能な記述にブラシュアップしていけば、やがては、ロバストなプロジェクトになるのではないか、と思います。

1 制約仕様

(1)新人4名に対して平日の新人日勤者数は3〜2名に設定しています。
  しかし、新人研修時だけ日勤で4名出勤となるので、列制約を”特定の日だけ”外す簡単な方法”ないでしょうか。
  (現在は期間分けで制約を外していますが、研修日が多いと期間分けが煩雑になります)

 (2)同様に、行制約において通常は3連休までの制約をかけていますが、夏休みを5連休とりたい場合、
  行制約を”特定の人の特定の期間だけ”外す簡単な方法はないでしょうか。
  (現在はその人ごとに行制約を作成しているために、制約管理が煩雑になっています)


2 制約設計

2.1 列制約
その月の「特定の日」は、今月固有の曜日設定で指定します。



特定日と特定日以外で場合分けします。(下ペイン青部)



下青部で、上2行が旧記述、平日新人研修日以外が新記述になります。
上の新人研修日は、絶対日時で、月が替わっても変わりません。例えば、次月は、

新人研修日 →空集合
新人研修日以外 →全集合(全日)
平日新人研修日以外→祝日でない平日

旧記述と等価になり、特に悪影響は生じません。また、新人研修日が、その月内に定義された日では、平日新人研修日以外 の制約は外れることになります。
結果的に、当初の「特定の日だけ制約を外す」という目的は達成されます。

このようにして、よりロバストな制約とすることが出来ます。



上で定義した新人研修日に 1日研修を予定として記述します。


2.2 行制約

長期休みあり というプロパティを追加します。
同時に、長期休みなし というプロパティをその否定として定義します。

長期休みあり プロパティを該当者にマークします。


長期休みなし プロパティで、スキルグループを定義します。これにより、長期休みあり の人には、この制約(青部)は、適用されません。

同様にして、長期休みあり/なし を用いて他の制約も書き換えることが可能です。スタッフプロパティのページだけで、月々の変更については、対処可能なように
しておくのがポイントです。