Мне нужно реализовать алгоритм, который генерирует расписание для университета.Я искал и нашел много алгоритмов.Но здесь есть проблема.Мне нужен алгоритм, который генерирует расписание на весь семестр, а не на еженедельной основе.Следует также учитывать предопределенный порядок частей курса, например, упражнение 1 должно быть после лекции 2 и перед лекцией 3. У вас есть какие-либо предложения?
Спасибо.
ОБНОВЛЕНИЕ:
У меня есть следующие жесткие ограничения:
H1: Для каждой комнаты в любой промежуток времени назначена только одна часть курса.
H2: В комнате могут разместиться все учащиеся иудовлетворяет всем функциям, необходимым для мероприятия.
H3: Ни один студент не посещает режим, кроме одного курса одновременно (по крайней мере, обязательные курсы)
H4: Ни один учитель не преподает более одной части курса одновременно.
Мягкие ограничения:
S1: часть курса не должна выделяться для временного интервала, неудобного для лектора.
S2: должно быть минимальное количество промежутков между классами учителя.
S3: должно быть минимальное количество промежутков между классами для студента.
S4: классы должны удовлетворять предпочтениям лектора - дни и временные интервалы.
S5: Части курса должны быть запланированы в предопределенном порядке.
Пример:
Курс «Архитектура программного обеспечения»
Week No Course Room Course Part Day Time
--------+---------+-------+--------------+----------+-----
Week 1: SA 435 Lecture 1 Wednesday 8.15-11
Week 2: SA 435 Lecture 2 Wednesday 8.15-11
Week 3: SA 47 Lab 1 Monday 13-15
Week 3: SA 436 Lecture 3 Wednesday 11-14
Week 4: SA 243 Exercise 1 Monday 13-15
Week 5: SA 436 Lecture 4 Wednesday 8.15-11