著者:森和哉
近年、ビジネスのさまざまな分野において、業務の熟練者の高齢化と、後継者不足が深刻化しています。中でも、「計画策定」業務は、豊富な経験や特殊なスキルが必要とされることから、特に属人化が進行しています。「Red Hat Business Optimizer」は、そのような企業の計画策定業務を標準化し、より効率的な計画の立案を可能にします。
シェルスクリプトマガジン Vol.70は以下のリンク先でご購入できます。
図8 制約条件「すべてのシフトに従業員が割り当てられていること」のコード
■employeeRosteringScoreRules.drl
1 2 3 4 5 6 7 8 |
(略) rule "Assign every shift" when Shift(employee == null) then scoreHolder.penalize(kcontext); end (略) |
■RosterConstraintConfiguration.java
1 2 3 4 5 6 |
(略) public static final String CONSTRAINT_ASSIGN_EVERY_SHIFT = "Assign every shift"; (略) @ConstraintWeight(CONSTRAINT_ASSIGN_EVERY_SHIFT) private HardMediumSoftLongScore assignEveryShift = HardMediumSoftLongScore.ofMedium(1); (略) |
図9 制約条件「従業員が勤務を希望している時間帯へのシフトの割り当て」のコード
■employeeRosteringScoreRules.drl
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
(略) rule "Desired time slot for an employee" when $availability: EmployeeAvailability( state == EmployeeAvailabilityState.DESIRED, $e : employee, $startDateTime : startDateTime, $endDateTime : endDateTime) Shift(employee == $e, $startDateTime < endDateTime, $endDateTime > startDateTime) then scoreHolder.reward(kcontext, $availability.getDuration().toMinutes()); end (略) |
■RosterConstraintConfiguration.java
1 2 3 4 5 6 7 |
(略) public static final String CONSTRAINT_DESIRED_TIME_SLOT_FOR_AN_EMPLOYEE = "Desired time slot for an employee"; (略) @ConstraintWeight(CONSTRAINT_DESIRED_TIME_SLOT_FOR_AN_EMPLOYEE) private HardMediumSoftLongScore desiredTimeSlot = HardMediumSoftLongScore.ofSoft(10); (略) |