FAQ — Поведение алгоритма формирования расписания
Часто задаваемые вопросы о работе механизма автоматического формирования расписания. Описание самого алгоритма см. на странице Формирование; подробности работы с ним см. на странице Автоматическое формирование.
С какими типами расписаний работает алгоритм формирования?
Для недельных, цикличных и календарных расписаний. В календарном режиме занятия размещаются на реальные даты, а в параметры формирования входят границы дат.
Как работает алгоритм?
Omniscol запускает в фоновом режиме процесс решения задачи. Алгоритм оценивает занятия, которые нужно разместить, заданные ограничения и предпочтения формирования. Результат зависит прежде всего от качества данных: объёма часов, преподавателей, кабинетов, групп, доступности, несовместимостей и ограничений между площадками.
Для каждого формирования запускается отдельная параллельная среда вычислений. Очередью управлять на стороне школы не нужно; подготовка часто занимает около десяти секунд, и только потом начинается сам расчёт. В модуле Управление расписанием кнопка Сформировать расписание запускает расчёт, показывает его состояние и позволяет изучить результат.
Основа алгоритма — ИИ-оптимизация: нейросимволическая метаэвристика Монте-Карло, то есть стохастический поиск, символические ограничения и постепенная оптимизация оценок. Это не гарантия успеха на заведомо невыполнимом наборе ограничений; в таком случае Omniscol возвращает диагностику.
Сколько времени занимает формирование?
Время зависит от размера расписания, числа занятий, числа ограничений и выбранных параметров. Для ориентира: в основной школе примерно на 550 учеников, 45 преподавателей и 16 классов, с широкой доступностью, полное расписание с очень малым числом окон или вовсе без них можно получить меньше чем за минуту, если данные согласованы. Более плотный случай, с множеством ограничений или с затратной оптимизацией, может занять заметно больше времени.
Соблюдает ли алгоритм все ограничения?
Жёсткие ограничения соблюдаются строго:
- преподаватель находится только в одном месте в каждый момент времени;
- у класса нет двойного размещения, кроме групп в разделении;
- доступность и слоты, отмеченные как «Недоступно»;
- обычный кабинет занят только одним занятием одновременно;
- большой кабинет используется только в пределах его вместимости и числа классов;
- специализированные кабинеты, вместимость, материальные ресурсы и поездки между площадками должны быть совместимы;
- закреплённые занятия остаются на своих местах.
Мягкие ограничения (доступность со статусом «Нежелательно», предпочтения, педагогические весовые коэффициенты, баланс учебных дней, число дней присутствия, окна в расписании) оптимизируются по возможности. Они создают штрафы: алгоритм ищет решение с наименьшей суммой штрафов, но может оставить часть из них, если это лучший компромисс, совместимый с жёсткими ограничениями.
Что делать, если формирование не удалось?
Когда полное решение не найдено, Omniscol возвращает лучшее из рассчитанных расписаний, а неразмещённые занятия оставляет на панели стикеров. Неполное расписание можно просмотреть, чтобы понять, что уже размещено, затем исправить ограничения или вручную переставить некоторые занятия. Самые частые причины описаны на странице Диагностика неудачного формирования расписания.
Можно ли вручную закрепить положение занятия?
Да, с помощью закрепления занятия после ручного размещения. При новом формировании алгоритм не сдвигает закреплённое занятие, а остальные подстраивает вокруг него. Это удобно для неподвижных занятий (занятия внешних специалистов в фиксированную дату, экзамены с назначенной датой).
Почему алгоритм не предлагает несколько решений?
Алгоритм оптимизирует расписание по заданным ограничениям и предпочтениям и возвращает лучшее найденное решение. Чтобы получить несколько решений для сравнения, скопируйте расписание перед каждым формированием и слегка измените ограничения или весовые коэффициенты между проходами.
Учитывает ли алгоритм объявленные отсутствия?
Алгоритм работает со структурным расписанием, независимо от отсутствий. Отсутствия обрабатываются впоследствии в модуле Управление отсутствиями (см. Обзор модуля «Управление отсутствиями»): они влияют на отображение опубликованного расписания и на статистику в разделе «Сводная панель», но не на лежащую в основе структуру.
Намеренный конфликт и блокирующий конфликт
Не все конфликты равнозначны:
- Неблокирующие конфликты можно оставить как есть, если это осознанный выбор (например, кабинет, у которого отображаемая численность превышает вместимость, потому что известно, что придут не все записанные). Предупреждение остаётся видимым, но не блокирует.
- Блокирующие конфликты не дают автоматическому формированию завершиться успешно (нет подходящего кабинета, несогласованное совмещение и т. п.). Пока такие конфликты остаются, кнопка Сформировать расписание неактивна.
См. Конфликт.