Перейти до основного вмісту

Обмеження, яке робить ваш розклад FET неможливим

Importing from FET 1 хв читання

Оскільки одне неправильне обмеження може зробити FET-файл неможливим, а пошук триватиме годинами, перевірте файл заздалегідь — це безкоштовно і займає секунди.

Ви завершуєте введення даних. Натискаєте Згенерувати у FET. А потім чекаєте.

Минає десять хвилин. Минає година. Кількість розміщених занять ніколи не досягає загальної. Зрештою, ви зупиняєте генерацію і не маєте розкладу. Гірше те, що ви не знаєте чому.

Проблема часто в одному обмеженні

Шкільний розклад має сотні обмежень. Більшість із них правильні. Одне з них — ні, і ви не можете його побачити.

Наприклад:

  • Клас із 31 студента може використовувати лише аудиторії на 30 місць.
  • Викладач має 26 годин занять, але доступний лише протягом 24 періодів.
  • Правило залишає заняття без жодного можливого часу початку протягом тижня.
  • Чотири заняття мають бути в різні дні, але студентська група навчається лише три дні.

Кожен із цих випадків робить розклад неможливим. Жоден варіант не може його задовольнити. Але файл виглядає звичайним. FET відкриває його і починає пошук.

Чому пошук вам не повідомляє

FET дуже добре виконує свою роботу. Він шукає варіант, що відповідає кожному обмеженню. Деякі файли FET відхиляє одразу. Для багатьох інших проблем він починає пошук, який не може бути успішним.

Невдалий пошук говорить вам лише одне: цей пошук не знайшов варіанта. Він не може відрізнити «ваші обмеження роблять це неможливим» від «цього разу я не знайшов». Тож ви змінюєте вагу, пробуєте знову і знову чекаєте.

Ось куди йдуть години. Час витрачається на пошук, який ніколи не міг бути успішним, а не на вирішення.

Спочатку порахувати, потім шукати

Є швидше запитання, яке варто поставити перед генерацією: чи цей розклад взагалі можливий?

Це запитання не потребує пошуку. Воно потребує арифметики. Перевірка читає ваші обмеження і підраховує простір, який вони залишають:

  • кількість годин, які має викладати викладач, порівняно з доступними періодами
  • можливі часи початку заняття після застосування всіх правил
  • чи два заняття, які мають відбутися, не змушені потрапити в один і той самий період
  • чи не потребує група занять більше днів, ніж є в тижні

Коли один із цих підрахунків досягає нуля, розклад стає неможливим. Це не припущення про складність. Це доказ, і перевірка надає його за секунди.

Вона називає правило

Доказ корисний лише тоді, коли ви можете на нього відреагувати. Кожен результат перевірки простими словами повідомляє, що не так, і називає відповідні правила.

Один результат перевірки, розгорнуто: у класі 31 студент, а найбільша аудиторія, яку він може використовувати, вміщує 30. Відповідне правило названо
Один результат перевірки, розгорнуто: у класі 31 студент, а найбільша аудиторія, яку він може використовувати, вміщує 30. Відповідне правило названо

У наведеному вище прикладі Математика · 9A має 31 студента. Найбільша аудиторія, яку дозволяє обмеження Бажана аудиторія для заняття, має 30 місць. Рішення очевидне: дозволити більшу аудиторію або розділити клас.

Результати перевірки згруповані. Доведено неможливим містить проблеми, які не може обійти жодна програма для складання розкладів. Інші групи містять імовірні помилки та речі, які ускладнюють файл. Дізнайтеся більше в статті Чотири види результатів перевірки.

Два способи використання

Без облікового запису: помічник FET. Перейдіть на fetviewer.com/check і виберіть свій файл .fet. Це безкоштовно, і немає обмежень на повторні перевірки. Ваш файл залишається на вашому комп'ютері. Ваш браузер надсилає на наш сервер лише зведення, і це зведення не містить імен: викладачі, аудиторії та студентські групи передаються як числа. Ми нічого не зберігаємо. Дивіться Перевірка файлу без облікового запису.

У вашому обліковому записі: передпольотна перевірка. Коли ви імпортуєте свій розклад, сторінка Передпольотна перевірка знаходиться поруч з обмеженнями на екрані даних. Кожен розділ обмежень також показує однорядкове зведення вгорі. Змініть обмеження і перевіряйте знову під час роботи. Дивіться Що робить передпольотна перевірка.

Чого вона не може вам сказати

Перевірка доводить неможливі випадки. Вона не може довести, що для файлу буде знайдено рішення, і не може сказати, скільки часу це займе у FET. Чиста перевірка усуває одну причину невдачі. Пошук — це все ще робота FET.

Тож використовуйте обидва інструменти в такому порядку:

  1. Перевірте файл.
  2. Виправте те, що доводить перевірка.
  3. Потім дозвольте FET шукати.

Прочитайте повне порівняння в статті Чим перевірка відрізняється від генерації розкладу у FET.

Перед наступним довгим очікуванням

Наступного разу, коли генерація триватиме занадто довго, зупиніть її. Спочатку перевірте файл. Якщо обмеження робить розклад неможливим, ви дізнаєтеся про це за секунди і побачите, яке саме.

Перевірити ваш файл FET →