Дана софтверная компания, где разработчики работают в командах над рядом разных проектов. Проекты требуют определенных навыков от назначенных разработчиков. Для моих целей я хочу сделать это простым и ограничить это одним навыком, то есть языком программирования. Таким образом, для некоторых проектов требуется Java, для других - C и т. Д. Проекты имеют фиксированную продолжительность, и каждому проекту должны быть назначены два разработчика.
В любой момент времени некоторые проекты находятся в стадии реализации, и появляются новые проекты, которые необходимо запланировать в какой-то момент в будущем. Я хочу рассчитать график, какие разработчики должны работать над каким проектом и когда.
Я не ищу оптимального решения (если такое вообще возможно). Я доволен расписанием, которое может составить человек-менеджер.
Я читал статьи о проблемах планирования с ограниченными ресурсами и задачах назначения, но у меня очень мало формального обучения CS, и я часто теряюсь во всех нюансах различных вариантов этих задач.
Я думаю, что моя проблема - это более простой вариант планирования работы цеха, где задания - это проекты, а разработчики - это машины, поэтому задания требуют одновременного использования нескольких машин. Есть только одно прецедентное ограничение: запущенные проекты не могут быть прерваны и поэтому должны быть завершены в первую очередь.
Из всех возможных решений, о которых я читал, я склонен использовать генетический алгоритм, в основном потому, что я читал, что люди получают с ними хорошие результаты, и потому, что я использовал его некоторое время назад для другого проекта. Я также читал о хороших результатах линейного программирования, но знаю об этом очень мало.
Является ли генетический алгоритм возможным решением этой проблемы? Или есть решения получше?