2020年6月24日水曜日

フェーズオブジェクトのカウント

フェーズオブジェクト用に「整数計数」を追加しました。


一番上の行制約は、通常の基数制約ですが、同じフェーズオブジェクトでも整数計数とすると
フェーズオブジェクトのカウント値を計数します。
タスク集合の定義は、
■働きカウント:日タスクまたは、有給タスク
■働きカウントしない:公休タスクまたは、希望休みタスク

 としています。



フェーズ変数の定義は、

整数計数で使われるのは、カウント値です。午前もしくは午後のみ働く(有給含む)カウント値は1としています。午前午後両方働くカウント値は、2です。

フェース変数集合の定義は、下の通りです。
計数しているのは、働集合 で、
働集合=午前働(1) |  午後働(1) | 前後働(2)
です。それぞれ、同時には成立しない関係であることに注意してください。例えば、午前働と前後働きは、同時には成立しません。(これが整数計数のための要件です。シフトでは、自動的にこの要件は満足しますが、フェーズ変数集合では、ユーザ定義に依存します。)
こうすると、前後働のときは、2がカウントされ、午前働時には1がカウントされます。

このケースの場合時間指定での制約は、176時間でした。8時間カウントでは、22日間になりますが、午前、午後を1として、等価な制約は、44になります。(4時間をひとコマとして、44Unitという意味になります。)これは、時間制約ではないので、ソフト制約化することも可能です。

フェーズ変数も定義することなくPythonで造作なく書けますが、なるべくPythonを使わないで書けることも多くの方に使って頂ける要件かな?と思いました。








0 件のコメント:

コメントを投稿