本節書摘來異步社群《java遺傳算法程式設計》一書中的第2章,第2.3節,作者: 【英】lee jacobson(雅各布森) , 【美】burak kanber(坎貝爾),更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。
本書中的每一章都作為一個包,放在附帶的eclipse項目中。每個包都至少有4個類。
geneticalgorithm類,它抽象了遺傳算法本身,為接口方法提供了針對問題的實作,如交叉、變異、适應度評估和終止條件檢查。
individual類,它表示單個候選解及其染色體。
population類,它表示一個種群或個體的一個世代,并對它們應用群組級别的操作。
包含main方法的類,包括一些引導代碼,前面僞代碼的具體版本,以及具體問題可能需要的任何輔助工作。這些類根據它解決的問題來命名,如allonesga、robotcontroller等。
在本章開始時寫下的geneticalgorithm、population和individual類,需要針對本書後面的各章進行修改。
你可以認為這些類實際上都是接口的具體實作,如genetic algorithm interface、populationinterface和individualinterface,但是為了讓eclipse項目的布局保持簡單,我們沒有使用接口。
本書中的geneticalgorithm類總是實作了一些重要的方法,如calcfitness、evalpopulation、isterminationconditionmet、crossoverpopulation和mutatepopulation。但是,根據手上問題的要求,這些方法的内容在每章中略有不同。
在嘗試本書中的例子時,我們建議針對每個新問題複制geneticalgorithm、population和individual類,因為一些方法的實作在各章中保持不變,但另一些方法會有所不同。
此外,請務必閱讀附帶eclipse項目源代碼中的注釋!為了在本書中節省篇幅,我們已經省略了較長的注釋和文檔注釋塊,但非常認真地在可供下載下傳的eclipse檔案中提供了充分的源代碼注釋。對你來說,這就像讀第二本書一樣!
在許多情況下,本書的章節會要求你在一個類中添加或修改一個方法。一般情況下,在檔案的什麼位置添加新方法并不重要,是以在這些情況下,我們要麼在例子中省略類的其餘部分,要麼隻顯示函數簽名,僅僅是幫助你保持正确的方向。