2014年4月2日水曜日

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

問題は、休み間隔を2週間程度とする、という仕様です。
言い換えると、短すぎても駄目だし、長すぎてきも駄目ということです。
ただ、このままでは、漠然しすぎていますね。

この実装は難しいですが、
以下を頑張って読んでいただくと、制約が書けるようになります。

もう少し具体的に考えるために、1ヶ月を4区間で、区切って考えます。

1 2 3 4
休  休       -Good!
    休   休-Good!

もし、第1週目が、休みのときは、第3週目が休みであれば、仕様にマッチします。
同様に、第2週目が、休みのときは、第4週目が休みであればよいですね。
以上が、仕様上許される全てのパターンで、これ以外の休みパターン、

1 2 3 4
休       休 -NG Too Long
休休     -NG  Too Short
    休休         -NG   Too Short
   休休     -NG   Too Short
   
  
は、すべて不可になります。
そうすると、どういう制約にすればよいでしょうか?

パターン1:1週目に一回かつ3週目に一回
パターン2: 2週目に一回かつ4週目に一回

制約: パターン1  OR  パターン2

という制約を書けばよいことになります。そうすれば、パターン1または、パターン2どちらか、
または、両方の制約が満足されますから、約2週間間隔で2回以上のの休みが取れることになります。

正確には、約2週間の最小は、1週間で、最大は、3週間になりますが、あまり範囲を狭くしすぎると
「解がない」可能性が高まるので、とりあえず、この制約でやってみましょう。

<続く>


  
 

0 件のコメント:

コメントを投稿