2. 4.1 基本制約に例外も考慮する

制約に例外はつきものです。例外の度に、制約を見直すのは効率的ではありません。可能ならば、少々の例外にも対応可能なように記述します。

1 制約仕様

表1:

外来 訪問看護 オンコール
2名以上
2名以上
2名以上
2名以上
2名以上
2名以上
- -

Q.相談ですが、祝日の都合にて5月の場合、3日は訪問なし、4日5日は訪問2便(2人)にて調整したい場合、
あらかじめどのような設定をするとスムーズにいくのでしょうか。

また、職員の都合にて日程を変更する場合、、、
例)通常なら8月5,12,19,26日は全日1便(1人)なのですが、5日を0便その代わり12日を2便(2人)にしたい場合など
その月によって変更したいときはどのようにしたらよいのでしょうか。

○設計

このように、基本は、表1ではあるけれども、上の要望を加味して整理すると、

訪問看護  例外事項
祝日に0になることがある
0または、2になることがある
-

となります。例外の日がいつになるかは、分かりません。月により変わります。


2 制約設計

2.1 特定の日の設定

例外の日は、下の曜日定義特定の日の設定で、設定します。
下の例では、訪問0便をクリックしたところを表示しています。これを設定するには、設定ボタンを押してください。 
別な日に設定するには、クリアし、Ctrl-クリックで、複数の日を選択、設定ボタンを押すことで設定されます。






訪問0便は、訪問が0の日になります。祝日に関係なく設定できます。

下の訪問2便は、訪問が2人の日の設定です。これは、土曜日のみに設定が可能です。

2.2 制約するための曜日集合を設定する

訪問休診日を下のように設定します。


これに対して、訪問診療日は、その否定ですから、次のようになります。




訪問2便でない、という集合も作っておきます。

訪問土曜日1便の定義は、訪問診療日、かつ、土曜日、かつ、訪問2便でない になります。

同様に、訪問土曜日2便の定義は、訪問2便 かつ 土曜日になります。



このようにして、任意の曜日集合を演算で得ることができます。

定義した、曜日集合を使って、列制約を定義できます。

2.3 列制約


下の青部が、今回定義した内容です。