作爲實現自定義啓發式現在奧塔規劃師規劃師提供了支持:在OptaPlanner
- 禁忌搜索。
- 模擬退火。
但是,如果我需要實施任何其他算法,如Opta Planner的遺傳算法,那麼在哪裏以及如何使用它。我有遺傳算法的代碼,但是我不知道如何將它與Opta規劃器集成。我發現很少有可能的地方。
- 內部自定義分數類。
- 內部自定義移動類。
- 內部自定義MoveFactory類。
- 在XML配置文件中。
請引導我在哪裏需要修改。
感謝
作爲實現自定義啓發式現在奧塔規劃師規劃師提供了支持:在OptaPlanner
但是,如果我需要實施任何其他算法,如Opta Planner的遺傳算法,那麼在哪裏以及如何使用它。我有遺傳算法的代碼,但是我不知道如何將它與Opta規劃器集成。我發現很少有可能的地方。
請引導我在哪裏需要修改。
感謝
其實,學生(山姆範Malderen)已經分叉OptaPlanner,並增加了遺傳算法的實現。我指導他的工作。
Here's the source code.它的工作原理。他寫了一個自定義SolverPhase
並重復使用Selector
,Move
,Termination
和。
基於這項工作,我們已經能夠確定一些問題(here's the jira to track),使OptaPlanner更加友好地實施基於人羣的metaheuristics。這就是說,該遺傳算法實施的結果是一直劣於禁忌所有測試用例上的所有非小數據集的禁忌搜索和延遲接受。就我個人而言,我認爲這個錯誤並不在於執行......我不是GA的堅定信徒,但OptaPlanner需要全天候支持他們(即使它只是爲了證明Local Search效果更好)。所以我絕對歡迎任何將Op添加到OptaPlanner的工作。
如果你要我把你與山姆的接觸讓他的論文的副本(說明他實現其GA技術),讓我知道:)
PS:另一種快速的方法是實施custom solver phase。更容易,但你只能重新使用分數計算管道。
感謝您的回覆。我肯定想諮詢Sam的工作,如果你能做到這一點,這將是一個很大的幫助。也正如我在我的查詢中提到的,你能否讓我知道整合任何其他(凸殼,蟻羣等)元啓發式算法的過程。 –
@RajeevSingh同樣的方式:編寫你自己的'... SolverPhase'和'... SolverPhaseConfig'(通過複製粘貼現有的一個,比如'LocalSearchSolverPhase(Config)')來開始。你應該能夠重複使用很多。 –