2014年3月30日日曜日

連続休みを2回以上、連続休み間隔は2週間程度で平準化

という、ご要望を頂きました。平準化の部分は、できればということで、弱い制約でよい、とのことでした。最初は、まずい制約の例です。

<まずい制約例>
連続休みが2回以上制約ですが、簡単に下の青部のように記述しました。

 
その結果がこちらです。

まずい点がお分かりでしょうか?
3回連続の休みを
公公公
2回の連続休みとしている点が、意図していないのです。

これを回避するために、公公公を2回にカウントしないための制約について考えてみましょう。
!xxx
をカウントすれば、良さそうですが、これも厳密ではありません。初日に前月からの公が続いている場合、カウントしなくなってしまうのです。

31  1  2
公 公 公--->!xxxにマッチしないので、カウントしない xxなら1日2日でマッチする

1    2     3    4
日   公 公 公 --->!xxxに2日でマッチ   

ですから、初日と、それ以外で制約を分ける必要があります。つまり、

Σ 初日の場合は、xxを、スケジュール日は、!xxxを

をカウントすればよいです。

これを記述するために、Version111から、パターン記述の拡張を行っています。

<  続く >


0 件のコメント:

コメントを投稿