一番上の行制約は、通常の基数制約ですが、同じフェーズオブジェクトでも整数計数とすると
フェーズオブジェクトのカウント値を計数します。
タスク集合の定義は、
■働きカウント:日タスクまたは、有給タスク
■働きカウントしない:公休タスクまたは、希望休みタスク
フェーズ変数の定義は、
整数計数で使われるのは、カウント値です。午前もしくは午後のみ働く(有給含む)カウント値は1としています。午前午後両方働くカウント値は、2です。
フェース変数集合の定義は、下の通りです。
計数しているのは、働集合 で、
働集合=午前働(1) | 午後働(1) | 前後働(2)
です。それぞれ、同時には成立しない関係であることに注意してください。例えば、午前働と前後働きは、同時には成立しません。(これが整数計数のための要件です。シフトでは、自動的にこの要件は満足しますが、フェーズ変数集合では、ユーザ定義に依存します。)
こうすると、前後働のときは、2がカウントされ、午前働時には1がカウントされます。
このケースの場合時間指定での制約は、176時間でした。8時間カウントでは、22日間になりますが、午前、午後を1として、等価な制約は、44になります。(4時間をひとコマとして、44Unitという意味になります。)これは、時間制約ではないので、ソフト制約化することも可能です。
フェーズ変数も定義することなくPythonで造作なく書けますが、なるべくPythonを使わないで書けることも多くの方に使って頂ける要件かな?と思いました。
0 件のコメント:
コメントを投稿