2023年10月13日金曜日

様々な変則2交代パターンの評価

 パターンとしては、3種類+同値カウントの制約有無2種類の計5種類試しています。

インスタンスとしては、ICUで、約70人のスタッフです。長入明、各10人の確保が必要です。

インスタンスAは、長入明を一塊とするパターンで、最も基本的なものです。

このパターンに対して、長日数==入り数制約を入れ込んだのが、Bです。厳密解は、22で変っていないのにも拘わらず、大きく劣化しています。この原因は、解空間の減少および、同値カウントの持つ重い負荷による分が効いていると思います。いずれにせよ、同値カウントは、このような劣化もたらす可能性が強く、勤怠システムで、このような制約がないことを祈るのみです。

Cは、長入明け塊に、長日、入りという単独日を追加したものです。一見、これにより、LBが下がることが期待されたのですが、厳密解(AL4による結果)を見る限りこれによる減少はありません。ほぼ、Aと同じ性能ということが出来るでしょう。

Dは、Cに対して、さらに非番、半休という休み系のシフトを追加したものです。これによりLBが下がり、実際、UBも下がっています。

Eは、Dに対して
単長数=2*非番数+半休数
という制約を付加したものです。LB値は、Dと同じですが、UB値は、劣化し、求解時間も2倍程度となっています。

以上の結果より、
1)同値制約は、重い。求解時間は、2倍近くとなり、UB値も劣化しています。
2)単長、単入り追加によって、期待されたLB値向上は見られない。
3)非番と半休数による長日端数分の補償は、Bに比べれば、劣化は少ないが、システムが複雑になった結果、求解時間が2倍程度となる。

以上の結果より、
■推奨パターンは、A となる。一ヶ月で切り取ると、長日と入りとの差は、+-1が発生するが、先月との貸し借りで見れば、0となり、面倒な時間補償計算が不要になる。
■長日数=入り数を入れることは、大きく求解時間と解品質を劣化させる可能性があり避けるべきである。
■長日補償の方法としてEの方法があるが、可能なスタッフは、パターンAを採用するなどして、システム負荷を小さくすることが、求解時間改善につながる。


AL4による改善(Ryzen9950) E:
Default:660sec  
同値カウントをハード制約化 147sec 
半休項のみを全クリア 142sec
半休非番項を全クリア 121sec

AL4では、ソフト制約をハード制約化することが大きく改善する。
Default:660sec  LB=UB=22
同値カウントをハード制約化 147sec LB=UB=22
公級数をハード制約化 143sec
5連勤務の後の2連休をハード制約化 115sec
入り回数をハード制約化 116sec
=> 半休非番項を全クリア(パターンA) 87sec
効果の大きい順:
同値カウント>パターンの長いソフト制約>かウント数の大きい基数制約

パターンAでの比較
AL4:UB=22 87sec
AL1:UB=27 144sec (UB向上の効果もある)







0 件のコメント:

コメントを投稿