Следует ли использовать решатели для случаев оптимизации, требующих создания данных?
Я работаю над решением проблемы оптимизации, основанной на списках сотрудников. Проблема в:
- У меня есть штатное расписание (количество сотрудников, необходимых в конкретный час, и это на весь день, т.е. 24 столбца).
- У меня есть правила рабочего времени, определенные законами штата и предпочтениями работника.
Я ожидаю, что результатом будут сдвиги, генерируемые штатным расписанием после рассмотрения всех правил и предпочтений.
Большинство решений по составлению списков работает в два этапа: сначала происходит смена штатов, а затем назначение сотрудников во вторую очередь. Я хотел бы что-то похожее на филиал и цену, которая является только одним шагом процесса (я не ожидаю, что кто-нибудь прочитает эту ссылку, просто для справки:))
Теперь я думаю о том, зачем реализовывать весь алгоритм ветвей и цен и использовать то, что уже существует, решатели, такие как Gurobi или Optaplanner. Решатели, скорее всего, работают с фиксированными фактами и пытаются сопоставить лучшее из них с переменной (сотрудником в данном случае), но они не имеют характера для генерирования фактов (в данном случае сдвиги).
Мне нужны только ответы, чтобы выяснить, как решить эту проблему, и я не ожидаю, что кто-то разместит здесь какую-либо реализацию. Итак, я должен использовать решатели для таких задач или построить свой собственный алгоритм. Любые головы?