Q. Aさんは日曜始まりの1週間に4日勤務の条件があります。スケジュールナースのブログを見てPython制約でできるのを読みましたが、どのように解決したらよいか分からない状況です。自分なりに行制約の「Aさん」のタブに制約をしてみましたが何か間違っているような。。。。Python制約なら便利そうなのですが。。
良いと思います。解もちゃんと4回づつになっていました。上のように、マウスホイールボタンを押して、各集合が意図通りになっていることを確認すると間違いなく制約できます。
端数の第5週は手入力にしてもよいでしょう。
別解は、以下をご覧ください。
「日曜日始まりの一週間」を先月からの1週間も見て継続する場合のやり方です。
表示開始日が6日間に限定した場合の話ですが、Pythonを使わなくても可能です。
先月が6日分あるとすると、以下の色部分に最初の日曜日がどのパターンにも一個だけ含まれます。
これを利用して、次のように曜日集合を構築出来ます。日曜日の第一週集合です。
同様にして第2週も定義できます。
第5週の定義です。月によっては第6週まで必要です。
これで、必要な曜日集合が定義できました。
定義した集合を用いて制約します。
<端数の処理>
第5・第6週は、端数になる可能性があります。そのためマクロを定義します。
次は、マクロの値をマウスホイールボタンを押して確認しました。第5週の値は、1になっていることが分かります。ちゃんと端数処理されていることが分かります。(第6週の値は0になっていました。)
マクロの記述です。Cは、集合要素を数える関数です。
注意:
残念ながら自動で次月も自動計算するように出来ていないので、その月毎、マクロの設定を押す必要があります。次のリリースで改善予定です。
→BUILDMAR072024で改善しました。
https://www.nurse-scheduling-software.com/japanese/constraints_faqs/chapter35/
0 件のコメント:
コメントを投稿