2022年10月6日木曜日

ペア禁止の実装の詳細

 ペアで、A,Bが禁止のとき

!(A&B);(1)

が、実装の中身になります。これをOR表現すると

!A+!B >=1;(2)

となります。もしくは、A+B<=1;(3)

です。ただし、A,Bは、Singleが上での条件で、Singleでない場合もあります。ORとANDです。AB共にAND集合の場合は、(2)式を拡張出来、

!A1+!A2+... !B1+!B2+...>=1;(4)

とすることが出来ます。この式の意味するところは、(1)式を満足させるには、独りのスタッフがそのシフトを満足しなければ十分である、ということです。

残念ながらOR集合が一つでも入った場合のペア禁止は、線形式で書くことが出来ません。AND/OR オペレータを用いる必要があり(4)のような簡単な式には出来ません。

が、実使用上の多くの場合は、(3)式が使えます。なので、線形ソルバが得意な形とすることが出来ます。現在のこのような最適化は行っていませんが、適用すれば、性能向上する可能性があります。


0 件のコメント:

コメントを投稿