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