2023年9月8日金曜日

pならばq

 現代の高校生がわからなくなった数学の基本問題 「p⇒(ならば)q」の否定文から考える数学教育(東洋経済オンライン) - Yahoo!ニュース

これを読むと、却って分からなくなる人も多いのではないでしょうか?

何度も書いていますが、A→B=~A|B と覚えてしまうことです。

A|B  |C

----------

0| x  | 1

1 |  0 | 0

1 | 1  | 1

~(A→B)=~(~A |B)=A&~B

従って、「天気がよい」⇒「遠足に行く」の否定は、天気がよい、かつ、遠足に行かないこと、になります。

パターンABで考えるとA→Bまたは、A←Bですから

(~A|B) | (A|~B)なので、

=~((A&~B) &(~A&B))

つまり、定型パターンとなります。



もっとよい説明は次です。P→Qは、集合の包含関係を表しています。

必要条件と十分条件の意味・3つの覚え方・例題 | 高校数学の美しい物語 (manabitimes.jp)

高校数学の美しい物語は、いつもお世話になっています。


2023年9月6日水曜日

子育て制約

 子育て中のスタッフは土日のどちらかを休みにしたい (nurse-scheduling-software.com)

独身の方からは、不公平との声が聞こえてきそうな制約です。しかし、土日の休みを増やすのではなくて、諦めてもらっている部分もある、ということを理解してもらうことも必要ではないでしょうか?

さて、技術の方の話ですが、毎度のドモルガンの定理で、良く使います。

A|B=~(~A&~B)

パターンは、AND形式の一択なので、&で表現する必要があります。シフトのパターンは、任意のNOT=チェックマーク で表現できます。また~()の~は、禁止と解釈できます。なので、次のようにパターン禁止でも実現できます。

しかし、この場合は、1回でもペナルティが入ってしまいます。今回のように1回までは、ペナルティとしない(あってもよい)としたい場合は、


パターン禁止ではなく、最大ー最小の最大を規制することになります。


2023年9月5日火曜日

実装しない制約

 顧客の要求を全て実装する訳ではありません。

スケジュールナースは、制約で解を求めるシステムですが、制約には、良い制約と悪い制約があります。良い制約システムとは、効率の良い制約で、求める解に、少ない制約で解が得られるシステムです。反対に悪い制約システムとは、効率の悪い制約で、求める解に、多大な制約リソースを使いそれでいて、中々求める解に到達しないシステムです。

様々な制約を実装してきて、必ずしも、顧客の要求全てを実装することが、効率良く、求める解に到達することではない、ということがあります。

効率の悪い制約とは、どのようなものがあるでしょうか?

例1 夜勤のペア組を全て異なるものしたい

仮にこれを実装したとして、どれだけ求める解に近づけるか? ということが視点としてあります。例えば、HCUでは、4:1であり、16床のとき、4人、24床のとき夜勤6人が常に必要となります。ICUは、2:1であり16床のとき、8人、24床のとき夜勤12人が常に(日勤、ロング日勤、入り、明けに関係なく)必要となります。

全て異なることを制約するとなると、HCU夜勤人数は、通常3人/夜勤要員24人なので、通常だと48人必要になります。なので、その組み合わせ総数は、48C6となります。

それが、一月(31日)に渡って一緒にならないことを保証するには、48C6*31の計算項が必要になります。380416872がその総数です。多大な計算リソースが必要となり、実際的には破綻してしまいます。

もう一つの視点は、効果です。多くの場合、解を見ていて、まず、目に付くのは、スタッフ間の夜勤数のばらつきだったり、2連休の数だったり、各スタッフの夜勤の集中度合いだったりするのが常です。

申し上げているのは、そういう主制約をまず実装して、それでも余裕があるならば、さらに制約を追加することも意味がありますが、そうではなく、それすら達成していない状態で、実装したとしても殆ど意味がないばかりか、主制約の実現を邪魔しかねない

ということです。この制約の場合、計算リソースを馬鹿食いするだけでなく、主制約の実現を邪魔する制約となる可能性が高い

ということが言えます。それならば、最初から実装しない方が良いのです。

制約が効率の良い制約か、そうでないかは、実装を検討してみないと判りませんし、経験を積まないと見通しを得るのは難しいです。

一言で言えば、「労多くして益なし」制約は実装しません。

効率の悪い制約例は、Kindle本でも述べているので参考にしてください。



    







2023年9月4日月曜日

育児部分休業

 勘違いしていたのですが、育児休業と育児部分休業は違います。

育児部分休業の場合は、勤務時間が短縮になります。なので、殆どの取得者は、早く帰ることを選択するみたいです。

新スタイルでは、これをスタッフ毎のシフトで設定しています。

公休制約が異なる場合のみスタッフプロパティシートの設定が必要になってきます。



2023年9月3日日曜日

長期休みでない

 どのような組織であっても、育児休暇、産休等で、長期離脱するスタッフはいます。で、そのようなスタッフの予定は、育、産等のラベルで埋めてしまいますが、その際に、通常制約と相容れず、ハードエラーとなってしまいます。

戻って来たときのスタッフプロパティシート設定は、覚えておきたいし、ハードエラーはなんとかしたいし、という状況での設定の仕方です。

長期休み者は、ラベルで埋めてしまいます。


長期休みのプロパティを設定します。その他の設定はそのまま残しておきます。

制約時は、グループ設定を考慮します。6日内に必ず公休が含まれないといけない、という設定ですが、長期休み以外の人が対象にすることによって、育児休暇で埋められた予定は、対象外となります。

その他の制約も同様にグループプロパティを考慮します。

グループ集合で、欲しい集合を定義します。


長期休みのスタッフが戻ってきたら、長期休みプロパティをクリアにすればよいです。また、現在長期休みのいない職場でも、将来必ず長期休みになるスタッフは出てきますから、そのような制約にしておくことがロバストな(外乱に強い)勤務表になります。




2023年9月2日土曜日

新しい記述スタイル

 介護施設のシフト勤務表のつくりかた (nurse-scheduling-software.com)

積極的にスタッフ毎のシフトとタスク集合を集合記述に使って記述します。

これを使うと、個別にシフトとタスクを禁止する記述が不要になります。


さらに、このグループ集合を使って、制約します。

月が変わると、スタッフ毎のシフトタスクを変更する場合もありますが、従来だと、先月部でハードエラーが生じることがありました。それが、オプションをEnableすることによって、Conflict部は予定がソフト制約になるので、ハードエラーが生じることはなくなります。
今後の記述は、全てこのスタイルを推奨していきます。従来スタイルも引き続きサポートしているので、記述変更する必要はありません。

なお、上記記事を動画にしてプロモーション動画をつくる予定です。


2023年9月1日金曜日

AUG282023ビルド版配信中

 昨日の時点で、私のPCのうち3/4台が新しい版に置き換わっていたので、おそらく、今週中には、配信が完了すると思います。完了後は、制約FAQSのサンプルもダウンロード可能になるのでご利用ください。

追加機能・Notes

1) タスクカウント

https://www.nurse-scheduling-software.com/japanese/manuals/user_manuals/chapter10#task_count

https://schedule-nurse.blogspot.com/2023/08/blog-post_20.html

https://schedule-nurse.blogspot.com/2023/08/blog-post_23.html

時間割作成問題タスク版 (nurse-scheduling-software.com)

2) リフレッシュ

3) Group集合名にスタッフプロパティのシフトとタスクを追加

https://schedule-nurse.blogspot.com/2023/08/blog-post_19.html

https://schedule-nurse.blogspot.com/2023/09/blog-post_72.html

4) スタッフプロパティのシフトとタスク 先月部の矛盾する予定をソフト制約化

https://schedule-nurse.blogspot.com/2023/08/blog-post_18.html

https://schedule-nurse.blogspot.com/2023/08/blog-post_17.html

介護施設のシフト勤務表のつくりかた (nurse-scheduling-software.com)

5)フェーズパターンのNOT禁止

https://schedule-nurse.blogspot.com/2023/08/not.html