Я працюю над широко використовуваним механізмом планування, який робить саме це. Так, це NP-Complete; найкращі підходи спрямовані на наближення оптимального рішення. І, звичайно, існує безліч різних способів сказати, який із них є «найкращим» рішенням - чи важливіше, щоб ваші вчителі були задоволені своїм розкладом, або щоб учні, наприклад, брали участь у всіх своїх класах?
Абсолютно найважливішим питанням, яке вам потрібно вирішити на початку, є те, що робить один із способів планування цієї системи кращим за інший ? Тобто, якщо у мене є графік, коли місіс Джонс викладає математику в 8 років, а містер Сміт викладає математику в 9 років, це краще чи гірше, ніж та, коли вони обоє викладають математику в 10 років? Це краще чи гірше, ніж такий, коли місіс Джонс викладає у 8, а містер Джонс викладає у 2? Чому?
Головна порада, яку я дав би тут, - якомога більше розподілити проблему - можливо, курс за курсом, можливо, вчитель за викладачем, може, кімната за кімнатою - і спочатку попрацювати над вирішенням підзадачі. Там у вас повинно вийти з декількох рішень на вибір, і вам потрібно вибрати одне, як найбільш вірогідне оптимальне. Потім, робота над створенням «попередніх» підпроблем враховує потреби пізніших підпроблем при оцінці їх потенційних рішень. Тоді, можливо, попрацюйте над тим, як вийти з ситуації, що зафарбована в кут (припускаючи, що ви не можете передбачити такі ситуації в попередніх підзадачах), коли потрапляєте в стан "немає дійсних рішень".
Прохід на оптимізацію локального пошуку часто використовується, щоб "відшліфувати" кінцеву відповідь для кращих результатів.
Зверніть увагу, що зазвичай ми маємо справу з дуже обмеженими ресурсами системами планування шкіл. Школи не переживають рік з великою кількістю порожніх кімнат або вчителів, які сидять у вітальні 75% дня. Підходи, які найкраще працюють у середовищах, багатих на рішення, не обов’язково застосовуються в навчальних програмах.