我想爲我的大學開發一個時間表發生器軟件。顯然它需要大量的約束滿足,也就是說我需要滿足很多規則才能生成一堆類不衝突的時間表。在做了一些研究和閱讀this article後,我覺得我需要在其中使用一些AI。現在,我是AI的一名完全新手。任何人都可以告訴我哪種算法在我的情況下效果最好?時間表發生器軟件的AI
回答
您可以用於此問題的最簡單的算法是遺傳算法(或任何其他進化算法)。使用GA解決這個問題非常簡單,但卻很有效。有很多論文和代碼使用這種方法來解決這個問題。
如果您沒有什麼規則和約束條件,您可能希望使用像CSP啓發式回溯這樣的簡單直接技術來加快速度,但如果有很多類和約束,我建議使用遺傳算法。
感謝您的回覆。你能不能擴大一點......可能舉個例子。 – 2014-09-27 07:24:52
當然 你應該先看看算法本身。這非常簡單,你可以在一段時間內學習。 該算法嘗試生成所有可能的解決方案並評估其適用性。 考慮到你已經學會了如何使用遺傳算法,這就是你應該做的時間表: 1.創建你的染色體(這裏每個染色體是一個可能的解決方案) 2.培養GA 3.使用具有最佳擬合度的染色體上一代 您可以使用關鍵詞進行搜索,例如使用遺傳算法解決大學時間表問題。在網上有很多關於此的例子和論文 祝您好運:-) – MSH 2014-09-27 07:32:17
非常感謝!你的回答真的讓我對這個項目感到樂觀! :) – 2014-09-27 07:45:27
那麼,確實不是一件小事。像這樣的問題很難解決。
在這裏,我可以推薦你兩件事情:
- 使用現有的CSP/COP解算器,並描述其語言的限制。這些求解器非常好,快速和調整,正在開發多年。
- 在離散優化領域進行教育(在coursera.org上有一門課程,名字很好)。只有在掌握了這些事情的基礎知識之後,才能嘗試編寫自己的求解器。但讓你受到警告!離散優化是痛苦和痛苦:-)。
這絕不是一個合適的地方告訴你CSP/COP如何工作。這是一個非常廣泛和困難的領域。
祝你好運!
謝謝!所以,你不同意遺傳算法的東西不會很難,正如MSH所建議的那樣? – 2014-09-27 07:43:52
不,我絕對同意!我在演化算法方面正在攻讀博士學位,基本概念很容易理解。但從我的經驗來看,使用最簡單形式的普通遺傳算法往往不夠好。如果你的問題不是黑盒子,大多數情況下使用專門的解算器會更好。 – zegkljan 2014-09-27 08:01:46
- 1. 代表AI反應時間的計時器
- 2. 如何測試在特定時間間隔發生的軟件行爲?
- 3. Python 3 AI:檢查時間
- 4. 定時器AI不工作
- 5. 從列表[a1,...,ai,ai + 1,....,an]到列表[ai + 1,...,an,a1,... ai]的OCaml
- 6. 事件發生的具體時間
- 7. GWT發生器得到編譯時間
- 8. Ai在發生碰撞時始終在旋轉
- 9. 以正確的時間間隔不發生事件c#定時器
- 10. Unix時間計算軟件
- 11. 安裝軟件包失敗:安裝軟件包beautifulsoup4時發生錯誤? ?
- 12. 檢查事件發生的時間容器
- 13. 微軟Kinect - openNI手發生器問題
- 14. SMTPException發生的時間
- 15. Eclipse:在「聯繫軟件站點」期間發生內部錯誤
- 16. 軟件包還原2.7和2.8之間發生了什麼?
- 17. 之間的「軟件開發方法」和「軟件開發流程」的區別
- 18. 使用自制軟件時發生衝突的postgres問題
- 19. 太多的時間來發送郵件與微軟的Exchange SMTP服務器
- 20. 自動事件SQL ASP.net時間發生
- 21. 隨機的Cplex數發生器用一定的時間間隔
- 22. 軟件開發生命週期資源
- 23. python-apt軟件包,獲取時間pkg已安裝並生成時間?
- 24. AI汽車電腦播放器開發
- 25. 發生事件時發生錯誤的Lambda表達式評估
- 26. 如何減少軟件開發中的構建中斷時間?
- 27. 軟件開發過程與軟件開發生命週期相同嗎?
- 28. 錯誤發生在機器人開源EDI軟件
- 29. 隨機時間發生器,用於7AM到11AM之間的時間
- 30. 軟件測試時的清潔房間
我坦率地不認爲這是一個廣泛的問題! – 2014-09-27 15:51:09