移至主內容

使您的 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 檔案 →