《Java遺傳演算法程式設計》 2 9 小結

2021-09-23 15:46:03 字數 447 閱讀 7900

在本章中,你已經學會了實現遺傳演算法的基本知識。本章開頭的偽**提供了乙個通用的概念模型,針對本書其餘部分所有要實現的遺傳演算法:每個遺傳演算法將初始化並評估種群,然後進入乙個迴圈,進行交叉、變異和再評估。僅當終止條件滿足時,才退出迴圈。

在本章中,你建立了遺傳演算法的支援元件,尤其是individual和population類,在後面的章節中基本上會復用它們。然後你專門建立了geneticalgorithm類,具體解決「全一」問題,並成功地執行了它。

你還了解了以下內容:雖然每個遺傳演算法在概念上和結構上相似,但不同的問題領域需要評估技術(即適應度評分、交叉技術和變異技術)的不同實現。

本書其餘的部分將通過示例問題,**這些不同的技術。在後面的章節中,你將復用population和individual類,只需輕微的修改。然而,後面每章將大量修改geneticalgorithm類,因為這個類是交叉、變異、終止條件和適應度評估發生的地方。

遺傳演算法小結 四

本以為自己的演算法已經初步達到了要求,沒想到再對先前演算法進行整合時,發現了乙個很大的漏洞,這也是導致在 y2時效果比其他演算法好得多的原因。改正後,發現 效能一下子就降低了將近20個百分點,真如五雷轟頂呀,不過既然發現了錯誤,才能找到改正的方向,看來做任何事情絕不能停滯於一點點的成績,正是因為y2...

《Java遺傳演算法程式設計》 2 10 練習

1 執行遺傳演算法幾次,觀察進化過程的隨機性。它通常需要多少代來找到這個問題的乙個解?2 擴大和減小種群規模。減小種群規模如何影響演算法的速度?它是否也影響找到乙個解需要的世代數?擴大種群規模如何影響演算法的速度?它如何影響找到乙個解需要的世代數?3 將變異率設定為0。這將如何影響遺傳演算法尋找解的...

《Java遺傳演算法程式設計》 2 6 交叉方法

在交叉過程中,除了用不同的選擇方法,還有可用不同的方法在兩個個體之間交換遺傳資訊。不同的問題具有不太一樣的特點,採用特定的交叉方法更好。例如,全一 問題只要求完全由1構成的字串。字串 00111 與字串 10101 具有相同的適應度值,因為它們都包含3個1。對於這種型別的遺傳演算法,情況並非總是如此...