- Выбор случайного занятия с проверкой, что преподаватель свободен
- Выбор типа занятия (лекция, семинар, лабораторное занятие)
- Если лабораторное занятие, то считаем softmax с весами по два слота перемножением
- Поиск случайного слота с учётом веса (softmax function)
- Выбор кабинета с проверкой, что он свободен
- Вставляем занятие
- Рекурсивно алгоритмом floodfill идём с шагом в 7 дней вперёд и назад
- Вставляем занятие в расписание преподавателя и кабинета
Соответствие нормам (минимальные требования):
- соответствует [[Учебный план]]
- соответствует [[Календарный учебный график]]
- соответствует нормам времени
- [[Рабочие часы университета]] (Производственный календарь)
Оценки равномерности:
- непрерывность расписания (без окон)
- семинары начинаются позже лекций
- равномерность загруженности
- равномерность начала занятий
- равномерность идентичности пар по дням / неделям
Дополнительные оценки:
- компоновка вуза (задействовать минимальное кол-во кабинетов)
- уменьшение средней дистанции между учебными занятиями
- не делить на подгруппы когда занятия дистанционные