今まで手がけてきた勤務表は、以下になります。
メインは、2交代3交代勤務表ですが、夜勤シフトが入らない勤務表も求められるようになりました。
そこで、登場したのが、タスクという概念です。これは、INRC2での記述をするときに導入したものです。シフトとタスクの混在でしたが、DayObjectという統一概念までには、至っていませんでした。
そこで、Refactoring を行い、今回、新たにDayObjectという概念を作りました。1日のDayは、Shift
とTaskで記述され、DayObject上で、結びつけられ、統一的に記述できます。なので、DayObjectは、Shiftの集合でもあり、Taskの集合でもあります。シフトの概念を拡張したものと考えてもよいです。
ただし、Algorithm4は、根底から構築しなおした方がよいとの結論に達しました。今のところ、Algorithm4の優位性は、コンペティション以外にはないのですが、必要になる可能性は、否定できないので、今回のRefactoringがまとまった後に再構築することにしました。
いずれにしても、今回のRefactoringにより、タスク勤務表が容易に記述できる効果の他に、シフト勤務表を拡張することも容易になります。シフトもタスクもどちらもDayObject上にあるので、相互の拡張が容易になります。多分、このShiftとTaskをDayObjectに融合するフレームワークは、学会でも報告がなく新しいと思います。このフレームワークにより、全ての勤務表を記述出来ると思います。
タスク勤務表 | シフト勤務表 | |||
訪問診療 | 2交代勤務表(病棟・介護) | |||
訪問介護 | 3交代勤務表(正循環・逆循環) | |||
保育勤務表 | SchedulingBenchmark | |||
アルバイト勤務表 | 放送局 | |||
看護師応援割り当て | 派遣業務 | |||
3直4交代工場 | ||||
INRC2 Benchmarks | ||||
Task | Shift | |||
DayObject | ||||
PhaseObject Aggregates | ||||
PhaseObject | Task | TaskAggregates | ||
Shift | ||||
Shift Aggregates |
0 件のコメント:
コメントを投稿