В программе "Расписание" алгоритмы, которые автоматически выполняют те или иные действия по составлению расписания вынесены во внешнюю библиотеку. На сегодняшний день она содержит следующие алгоритмы:
Алгоритм "Расстановка уроков" расставляет уроки так, что нет форточек у классов. Форточки преподавателей при этом игнорируются (поэтому впоследствии следует запускать алгоритм "Оптимизация форточек").
При расстановке уроков алгоритм учитывает:
Алгоритм не учитывает:
Алгоритм "Расстановка преподавателей" расставляет уроки выбранных преподавателей. На первых этапах, когда уроков поставлено мало, алгоритм расставляет занятия преподавателям без форточек. По мере того, как сетка заполняется, алгоритм начинает делать у преподавателей форточки. Некоторые занятия, если не найдено простого решения, он просто не ставит.
При расстановке уроков алгоритм учитывает:
Алгоритм "Удаление форточки у класса" помогает найти способы устранения форточки у класса, производя перестановку уроков в соответствии с одним из выбранных способов:
Алгоритм облегчает доводку расписания на финальной стадии.
Алгоритм "Оптимизация форточек" пытается уменьшить количество форточек у преподавателей, не меняя схему расстановки уроков у классов (уроки у классов меняются местами, новые ячейки при этом не занимаются). Процесс оптимизации иногда позволяет устранить более 95% форточек.
Для алгоритма могут быть определены преподаватели, чьи уроки не могут быть переставлены. Кроме этого в процессе работы алгоритм не переставляет потоковые занятия и пары.