次の例では、4直3交代です。
一つの制約が2列になっていて下段がシフト上段が従来のフェーズパターンです。シフトとフェーズの関係は、ANDでマッチします。シフトは無くても構いません。
下の例では、1勤務の残業回数を計測する制約ですが、フェーズパターンのみで記述する方法と、シフトとフェーズパターンの両方を用いる記述の二通りを記しています。どちらを使っても差異はありません。
次の制約では、2勤務の早残同シフト残業を禁止する制約です。早残を両方やると8+4+45=16h働くことになりますが、流石にこれはありえないので禁止してやる必要があります。
従来パターンでは、早と残でそれぞれ禁止が必要となりますが、シフトを用いたパターンでは、ひとつのパターンで記述が可能になります。たとえば、
下は、勤務2シフト AND phase 1 =Not NoTaskVar(=Working) AND phase4=NoTaskVar(=Working)のときにマッチします。
次の例は、早残回数の規制と、早残連続3回の禁止制約のための記述です。
最終的にはフェーズ集合を作って
従来は、Python記述をするより方法がなかったのですが、フェーズ機能の拡張により対応が可能になりました。
これで、一応フェーズ関係の拡張設計は終了しました。かなり大規模な拡張を行っていますが、現状の仕様については、影響がないようにしていますので、お客さまのプロジェクトに影響することはありません。
0 件のコメント:
コメントを投稿