Как добавить ограничения сотрудников по неделям, когда смены являются динамическими, зависит от трафика, и каждый сотрудник имеет различные ограничения? - PullRequest
1 голос
/ 10 мая 2019

Я пытаюсь придумать Python-код для планирования работы сотрудника для небольшой цепочки мороженого, основанной на ежедневном трафике клиентов.
Некоторые из сложных ограничений:

  1. естьбез фиксированных смен в день
  2. мин. часов можно работать - 4, а максимальных часов - 9.
  3. один должен работать только 5 дней в неделю.
  4. Магазин должен открыть и закрыть только человек в роли менеджера.
  5. Если кто-то работает более 4 часов, он должен сделать перерыв на 30 минут, а другой сотрудник должен присоединиться до перерыва.
  6. Я могу нанять как можно больше людей для обслуживания трафика клиентов, то есть без постоянных сотрудников в день или неделю.

Хотя я пытался играть с PySchedule и Google OR Tools, но я не смог закодировать вышеуказанные ограничения.Кроме того, я не уверен, есть ли другая библиотека с открытым исходным кодом, доступная для этого типа динамических ограничений.

Я ожидаю, что конечный результат будет примерно таким по ссылке ниже:

image

Буду признателен, если кто-то сможет пролить свет и указатья в правильном направлении.

1 Ответ

0 голосов
/ 12 мая 2019

Вы должны создать все возможные смены за один день, отмечая ту, которая должна быть назначена менеджеру.

  • 8 утра - 11 утра
  • 9 утра - 1 вечера (перерыв) 2M -> 4 вечера
  • ...

Тогда у вас есть два варианта

1) оптимально выбрать лучшую комбинацию в день. Затем восстановите полные смены из этого 2) в вышеприведенном выборе введите понятие еженедельного графика для 1 сотрудника и постройте.

Первая часть версии представляет собой простое перечисление. Вторая часть - это покрытие набора / разбиение с использованием MIP-решателя или CP-SAT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...