Вот некоторые общие замечания:
1) Ручное планирование редко предпринимается с нуля. Вместо этого кто-то начинает с графика на предыдущий год и изменяет его, чтобы учесть изменения в требованиях. Один из способов имитировать это с помощью компьютера - использовать алгоритм восхождения на гору, который до сих пор неоднократно пробует несколько небольших изменений, чтобы улучшить решение. Это может быть начато в текущем расписании.
2) Завершается ли когда-нибудь ручной процесс выводом о том, что требования коллективно недостижимы и что некоторые из них должны быть отброшены? В этом случае ваш алгоритм должен быть достаточно прозрачным, чтобы можно было понять сбои, или, по крайней мере, иметь возможность предлагать такие изменения (например, путем максимизации штрафной функции, которая позволяет ему вырабатывать «наименее плохое» решение, которое не удовлетворяет всем исходным ограничениям). ). Мне известен один случай, когда сложный подход, основанный на ограничениях, был заменен гораздо более простым алгоритмом, потому что сбои в системе, основанной на ограничениях, не давали достаточной обратной связи с пользователем.
3) Как ни странно, система следующего поколения вообще не использовала сложное планирование. Выяснилось - грубо говоря - что в то время, когда решения должны были приниматься, не все последствия сложных решений по планированию можно было предвидеть, и, в конечном счете, простой предсказуемый график, который можно было поддерживать бесконечно, был более продуктивным, чем постоянно меняя графики, чтобы получить небольшие мгновенные преимущества.