如何學習python遺傳演算法?

farsun發表於2021-09-11

單獨的數字大家可以直觀看到理解,但是如果兩個數字之間連線運算,那它就不是單獨的數字,而是一個獨立的組合,那大家還會理解是什麼意思嗎?相信很多人如果第一次看到,那肯定不理解,就跟我們程式設計時候,每個算數之間都有著各種各種的運算子號,讓他們的意義不同,因此,系統的學習是非常重要的,一起來看下如何學習好遺傳演算法。

1. 遺傳演算法主要流程

如何學習python遺傳演算法?

 2. 遺傳演算法理論基礎

模式(Schema):模式指有相同特徵的子集,比如二進位制字串11***(*為萬用字元)可以代表八個個體(2x2x2)。

階(Order):模式中確定位置的個數成為階,比如1110*的階為1

定義距(Defining Length):模式中第一個確定位置和最後一個確定位置之間的距離成為定義距

3. 遺傳演算法與傳統演算法的區別

遺傳演算法中的種群中始終維持一定數量的個體(每個個體都是問題的解),而傳統演算法中每次迭代都一般只保留最優解。

遺傳演算法用個體/基因型來代表問題的解,而傳統演算法的解一般都更直觀。

遺傳算透過計算適應度來計算最優解,而傳統演算法一般透過導數或梯度來計算最優解。

遺傳算由機率驅動,比如雜交機率、突變機率等,而傳統演算法一般都是有確定性的。PS:因為遺傳演算法的每一次迭代就朝著最優解的方向前進,即便遺傳演算法的過程有不確定性,但遺傳演算法最終的最優解一般都是確定的。

4. 什麼情景使用遺傳演算法

當遇到以下型別的問題時,可以嘗試遺傳演算法:

當問題的數學表達過於複雜或很難用數學表達時:遺傳演算法只需要定義個體、種群,選擇、雜交、突變方法和適應度方程就可以求最優解。

當資料含較多噪音時:遺傳演算法受資料中異常值的影響較小。

當外部環境在不斷變化時:遺傳演算法的種群始終保有一定數量的個體(解),因此遺傳演算法可以適應資料的改變,並針對新的環境產生新的最優解。

相信大家在瀏覽過系統的學習遺傳演算法各個階段的內容,逐一去攻破,會比較容易好上手遺傳演算法的哦~如果大家對這個演算法感興趣的話,可以多瀏覽幾遍以上內容,就可以瞭解怎麼開始學習遺傳演算法啦~

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4289/viewspace-2832273/,如需轉載,請註明出處,否則將追究法律責任。

相關文章