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