2024年11月13日水曜日

年末年始の実装その3

 今回は、実装その3です。

実装1の問題は、年始の予定を自動で考慮できないことでした。そこで、実装3では、予定範囲を拡大し年始を含んだ勤務表とします。

1)制約終了日を1月5日する

2)12月の公休区間を作成する

従来の「今月」は、制約終了日を年始1月5日としたために、12月1日ー1月5日が「今月」扱いになってしまいます。このため、公休数区間は、12月1日-12月31日となるように新たに定義します。


新たな定義をした集合名が「今月区間」になります。ちゃんと12月1日から12月31日までにマーキングされていますね。これは、スケジュールナースに組み込み済み定義「次月」という集合から作った「次月でない」と従来の「今月」のANDを作ることによって作成しています。これで、メンテナンスフリーとすることが出来ます。(1月勤務表では、空集合です。結果、今月==今月区間と自動的になります)

3)公休数を制約しているところを「今月」⇒「今月区間」に置き換えてやります。


夜勤数については、従来通り「今月」なので、12月1日ー1月5日区間での夜勤数になることに注意してください。

4)スタッフプロパティシートを調整する

夜勤数は、年始まで含んだ夜勤数になるので、普段より多めに設定する必要があります。

公休数については、普段通り、12月の公休数を入力します。


5)オプション 

以上が基本の枠ですが、多分、年始の各スタッフの夜勤数については制約する必要があるでしょう。

次のその実装例です。


年始分の夜勤回数をスタッフプロパティシートかマクロで制約します。スタッフプロパティシートで行う分には、使わないときに、ブランクにするメンテナンスが必要になります。

次は、マクロで行う例です。


この意味は、J4(次月集合)数をカウントし(関数C())0だったら、0を採用、0でなかったらD4(=1)を採用という式になっています。これはメンテナンスフリーにするための処理文です。

マクロでは、メンテナンスフリーに出来ますが、スタッフ毎の調整が出来ません。

一長一短です。このほかに、出てきた解を予定で調整してしまうのもアリだと思います。

どれを使ってもOKです。自分が分かり易い方法が一番です。

以上3回に渡って年末年始の実装を解説しました。







0 件のコメント:

コメントを投稿