2014-09-27 9 views
-3

我想爲我的大學開發一個時間表發生器軟件。顯然它需要大量的約束滿足,也就是說我需要滿足很多規則才能生成一堆類不衝突的時間表。在做了一些研究和閱讀this article後,我覺得我需要在其中使用一些AI。現在,我是AI的一名完全新手。任何人都可以告訴我哪種算法在我的情況下效果最好?時間表發生器軟件的AI

+0

我坦率地不認爲這是一個廣泛的問題! – 2014-09-27 15:51:09

回答

1

您可以用於此問題的最簡單的算法是遺傳算法(或任何其他進化算法)。使用GA解決這個問題非常簡單,但卻很有效。有很多論文和代碼使用這種方法來解決這個問題。

如果您沒有什麼規則和約束條件,您可能希望使用像CSP啓發式回溯這樣的簡單直接技術來加快速度,但如果有很多類和約束,我建議使用遺傳算法。

+0

感謝您的回覆。你能不能擴大一點......可能舉個例子。 – 2014-09-27 07:24:52

+0

當然 你應該先看看算法本身。這非常簡單,你可以在一段時間內學習。 該算法嘗試生成所有可能的解決方案並評估其適用性。 考慮到你已經學會了如何使用遺傳算法,這就是你應該做的時間表: 1.創建你的染色體(這裏每個染色體是一個可能的解決方案) 2.培養GA 3.使用具有最佳擬合度的染色體上一代 您可以使用關鍵詞進行搜索,例如使用遺傳算法解決大學時間表問題。在網上有很多關於此的例子和論文 祝您好運:-) – MSH 2014-09-27 07:32:17

+0

非常感謝!你的回答真的讓我對這個項目感到樂觀! :) – 2014-09-27 07:45:27

1

那麼,確實不是一件小事。像這樣的問題很難解決。

在這裏,我可以推薦你兩件事情:

  1. 使用現有的CSP/COP解算器,並描述其語言的限制。這些求解器非常好,快速和調整,正在開發多年。
  2. 在離散優化領域進行教育(在coursera.org上有一門課程,名字很好)。只有在掌握了這些事情的基礎知識之後,才能嘗試編寫自己的求解器。但讓你受到警告!離散優化是痛苦和痛苦:-)。

這絕不是一個合適的地方告訴你CSP/COP如何工作。這是一個非常廣泛和困難的領域。

祝你好運!

+0

謝謝!所以,你不同意遺傳算法的東西不會很難,正如MSH所建議的那樣? – 2014-09-27 07:43:52

+0

不,我絕對同意!我在演化算法方面正在攻讀博士學位,基本概念很容易理解。但從我的經驗來看,使用最簡單形式的普通遺傳算法往往不夠好。如果你的問題不是黑盒子,大多數情況下使用專門的解算器會更好。 – zegkljan 2014-09-27 08:01:46

相關問題