遺傳演算法解決數學等式(續)

2021-08-22 04:27:41 字數 857 閱讀 3831

之前的文章(用遺傳演算法解決簡單的數學等式問題/) 中介紹了過如何使用遺傳演算法解決數學等式問題,即尋找滿足等式

(a + 2b + 3c + 4d) - 30 = 0

的一組解。適應函式確定後,影響演算法好壞的主要依賴於交叉概率(crossover ratio),變異概率(mutation ratio)、初始基因組大小(即用於交叉變異的基因個數)和基因初始閾值。基因初始閾值指的是基因的取值範圍,比如等式中變數a/b/c/d 的取值範圍,我在實驗中限定變數為大小不超過100 的整數。下面給出本文的幾個結論。

之前的文章 中尋找的是四元一次等式的乙個解,這個解的個數是無窮的,遺傳演算法能夠找到乙個解,但每次找到的解也不相同。但如果要用遺傳演算法解乙個包含四個等式的四元一次方程組(唯一解)也是可行的,只是時間話的需要更長。比如遺傳演算法解四元一次等式平均需294 次迭代,解四元一次方程組需11400 次迭代(所有引數同

之前的文章)。本文使用的四元一次方程組為:

(a + 2b + 3c + 4d) - 30 = 0

(2a + 2b + 2c + 2d) - 24 = 0

(3a + 1b + 7c + 1d) - 60 = 0

(4a + 3b + 2c + 1d) - 30 = 0

增加基因組中基因數量,那麼每次迭代/迴圈中的基因數量更多,可能出現解的概率增大。在以四元一次等式為例的實驗中,增加基因組大小的確顯著減少了迭代的次數,即使考慮了增加基因數目而帶來的增量計算,演算法仍減少了程式的整體執行時間。

python遺傳演算法 Python 遺傳演算法實現

關於遺傳演算法 遺傳演算法是仿照自然界中生物進化而產生的一類優化演算法。個人感覺遺傳演算法簡單粗暴,適應性廣。關於遺傳演算法的介紹網上有很多了,這裡按照我自己的理解簡單概括一下。編碼解碼,將待優化的引數編碼為dna序列,最簡單直接的為二進位制編碼 即有兩種鹼基的dna鏈 生成隨機初代 選擇,適應度 ...

tsp問題 遺傳演算法解決

tsp問題最簡單的求解方法是列舉法。它的解是多維的 多區域性極值的 趨於無窮大的複雜解的空間,搜尋空間是n個點的所有排列的集合,大小為 n 1 可以形象地把解空間看成是乙個無窮大的丘陵地帶,各山峰或山谷的高度即是問題的極值。求解tsp,則是在此不能窮盡的丘陵地帶中攀登以達到山頂或谷底的過程。這一篇將...

遺傳演算法解決PlayTennis問題

機器學習課程結束,作為遺傳演算法小白,簡單實現了遺傳演算法解決playtennis問題,參考湯姆.公尺切爾的 機器學習 本人認為這個問題最大的難點在於如何設計適應度函式。首先把天氣狀況表示為二進位制位串 outlook sunny 100overcast 010rain 001humidity hi...