Я столкнулся с проблемой, я не уверен, как подойти. Я должен создать календарь для сотрудников, каждый из которых имеет определенные ограничения работы (некоторые личные, некоторые общие)
С чем я работаю:
- У меня есть врачи
- Каждый врач должен работать 5 дней в неделю.
- Каждый врач должен работать 1 ночь / неделю
- Каждый врач должен работать равное количество ночей по сравнению с другими врачами (или как можно ближе)
- Каждый врач должен работать в равных количествах по четвергам и воскресеньям по сравнению с другими врачами (или как можно ближе)
- Некоторые врачи не могут работать определенные дни / ночи (ввод пользователя)
- Некоторые врачи хотели бы работать определенные дни / ночи (ввод пользователя)
- Некоторые врачи хотели бы не работать определенные дни / ночи (ввод пользователя)
Рассматриваемый пользователь - человек, имеющий дело с календарем, я пытаюсь создать решение, которое будет автоматически генерировать календарь, который подчиняется всем ограничениям. Решением является большой ввод настроек «добавить врачей» и «добавить ограничения» для каждого доктора, а затем кнопка «создать календарь». Это действительно просто для пользователя.
Моя проблема :
Я не уверен, как сгенерировать фактическое планирование, я читал о нейронных сетях, генетических алгоритмах и так далее, и все они кажутся своего рода правильным решением, но тоже не совсем.
Когда я смотрю на GA, они призваны найти решение с заданной совокупностью (моя проблема), но исходная совокупность уже должна соответствовать заданному набору ограничений, которые затем будут оптимизированы. В этом случае мое начальное население уже является решением. Мне не нужно, чтобы это было "оптимизировано". Неважно, что один человек работает 3 ночи понедельника подряд, если это действительно правильно и что другие работают одинаково, это означает, что другие тоже будут работать 3 ночи понедельника, и это нормально. Это заставляет меня думать, что GA слишком «продвинуты» для меня, так как моя проблема уже решена с начальной точки GA.
Но опять же, GA действительно выглядит так, как будто они созданы для этого, так что я могу неправильно это понять?
В любом случае, поскольку я никогда не использовал ГА (или нейронные сети, или что-то в этом роде), я бы хотел быть уверенным, что я выберу правильный подход, прежде чем приступать к такой кривой обучения.
Мой вопрос :
Как вы думаете, какой подход / алгоритм / метод подходит для такой проблемы, как моя? GA-х? Нейронные сети? Что-то еще совершенно другое?
Я все уши и открыты для более подробной информации, если это необходимо, но я думаю, что я ясно дал себе понять :)