我有一個由變量類(〜100),房間(20),項(8)和工作日(5)組成的經典時間表問題。構建帶有大量變量的時間表問題
爲了簡化問題,以下是約束條件的減少。
一天是9個小時。
有些課程對學生來說是強制性的,而1,3,5,7(和2,4,6,8)的強制課程不能相互重疊。
類有不同的權重以小時計,有的2個小時,有些是3
一些類應該是在特定的房間。
同一時間同一班不能有兩場講座。
我正在用logilabs python約束模塊。我知道明智地選擇變量和領域將導致解決問題的時間更少。問題是我之前從來沒有做過約束編程,並且很難建立問題以找出開始的地點和內容。例如:
我可以設置一個約束條件,如「沒有兩個班級,同一個房間,同一天可以重疊彼此的時間段」。或者從「沒有房間可以在同一天預留超過9小時」開始,然後繼續使用縮小的解決方案域。我估計(沒有嘗試)第一個約束比另一個約束需要更長的時間來解決。但它也需要(我猜)改變變量和解決方案域或重建一個較小的問題。我已經是位變量,域,間隔,實現等失去
長話短說,我需要建立的問題,解決方案領域,艇員選拔變量明智地等
由於一些指針
UPDATE
使用logilab約束包我做了一個基本的應用程序並將其上傳到github
謝謝。實施永遠是我更好的起點:) – hinoglu 2011-05-09 10:46:11