Я пишу штатное расписание для моего офиса.По крайней мере, две смены в день (7 дней в неделю), и я хочу, чтобы оптимизатор позаботился о том, чтобы ни один сотрудник не работал с большим количеством смен в выходные дни, чем другой.
У меня есть простая рабочая программа, которая назначает одну Посох каждому Сдвиг .Структура программы выглядит следующим образом:
- SchedulingSolution является @ PlanningSolution
- SchedulingSolution содержит список <<strong> Shift >, который является @ PlanningEntityCollectionProperty
- Shift является @PlanningEntity
- Shift содержит Staff , который является @ PlanningVariable
- SchedulingSolution содержит @ ValueRangeProvider , который возвращает наш список сотрудников в виде списка<<strong> Персонал >.
В этом рабочем решении все сотрудники работают одинаково, но не учитывают выходные и будние дни.Чтобы разграничить рабочие дни по выходным, я заменил Список <<strong> Shift > в SchedulingSolution на Список <<strong> Day >.Каждый день содержит свой собственный список <<strong> Shift >, представляющий сдвиги, которые происходят в этот день.Теперь, когда я хочу вычислить количество выходных, с которыми работал сотрудник, я могу найти все Day объекты, которые представляют выходные дни и учитывают только Смены , содержащиеся в эти дни.
К сожалению, это помещает List <<strong> Shift >, который является @ PlanningEntityCollectionProperty , в класс, который не является @ PlanningSolution .Аннотация @ PlanningEntityCollectionProperty теперь игнорируется, и программа завершается ошибкой.
Я пропустил очевидный способ реструктуризации моей программы или я могу оставить исходную структуру программы и изменить мои shift объекты для записи, в какой день они происходят?
Заранее спасибо.Я постараюсь передать помощь вперед, если смогу.