国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

詳解用python實現簡單的遺傳算法

2020-02-16 11:24:34
字體:
來源:轉載
供稿:網友

今天整理之前寫的代碼,發現在做數模期間寫的用python實現的遺傳算法,感覺還是挺有意思的,就拿出來分享一下。

首先遺傳算法是一種優化算法,通過模擬基因的優勝劣汰,進行計算(具體的算法思路什么的就不贅述了)。大致過程分為初始化編碼、個體評價、選擇,交叉,變異。

遺傳算法介紹

遺傳算法是通過模擬大自然中生物進化的歷程,來解決問題的。大自然中一個種群經歷過若干代的自然選擇后,剩下的種群必定是適應環境的。把一個問題所有的解看做一個種群,經歷過若干次的自然選擇以后,剩下的解中是有問題的最優解的。當然,只能說有最優解的概率很大。這里,我們用遺傳算法求一個函數的最大值。

f(x) = 10 * sin( 5x ) + 7 * cos( 4x ),    0 <=  x <= 10

1、將自變量x進行編碼

取基因片段的長度為10, 則10位二進制位可以表示的范圍是0到1023。基因與自變量轉變的公式是x = b2d(individual) * 10 / 1023。構造初始的種群pop。每個個體的基因初始值是[0, 1, 0, 1, 0, 1, 0, 1, 0, 1]

2、計算目標函數值

根據自變量與基因的轉化關系式,求出每個個體的基因對應的自變量,然后將自變量代入函數f(x),求出每個個體的目標函數值。

3、適應度函數

適應度函數是用來評估個體適應環境的能力,是進行自然選擇的依據。本題的適應度函數直接將目標函數值中的負值變成0. 因為我們求的是最大值,所以要使目標函數值是負數的個體不適應環境,使其繁殖后代的能力為0.適應度函數的作用將在自然選擇中體現。

4、自然選擇

自然選擇的思想不再贅述,操作使用輪盤賭算法。其具體步驟:

假設種群中共5個個體,適應度函數計算出來的個體適應性列表是fitvalue = [1 ,3, 0, 2, 4] ,totalvalue = 10 , 如果將fitvalue畫到圓盤上,值的大小表示在圓盤上的面積。在轉動輪盤的過程中,單個模塊的面積越大則被選中的概率越大。選擇的方法是將fitvalue轉化為[1 , 4 ,4 , 6 ,10], fitvalue / totalvalue = [0.1 , 0.4 , 0.4 , 0.6 , 1.0] . 然后產生5個0-1之間的隨機數,將隨機數從小到大排序,假如是[0.05 , 0.2 , 0.7 , 0.8 ,0.9],則將0號個體、1號個體、4號個體、4號個體、4號個體拷貝到新種群中。自然選擇的結果使種群更符合條件了。

5、繁殖

假設個體a、b的基因是

a = [1, 0, 0, 0, 0, 1, 1, 1, 0, 0]
b = [0, 0, 0, 1, 1, 0, 1, 1, 1, 1]

這兩個個體發生基因交換的概率pc = 0.6.如果要發生基因交換,則產生一個隨機數point表示基因交換的位置,假設point = 4,則:

a = [1, 0, 0, 0, 0, 1, 1, 1, 0, 0]
b = [0, 0, 0, 1, 1, 0, 1, 1, 1, 1]

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 瑞昌市| 广水市| 敦煌市| 景东| 三穗县| 社旗县| 嘉义县| 乐昌市| 凤阳县| 博乐市| 拉萨市| 通榆县| 枞阳县| 德阳市| 永善县| 桂阳县| 江华| 萍乡市| 普兰县| 城市| 萍乡市| 拉萨市| 墨脱县| 武宣县| 政和县| 莱州市| 漾濞| 玉田县| 舟曲县| 阳东县| 辽宁省| 八宿县| 封开县| 阿拉尔市| 高安市| 罗定市| 准格尔旗| 南乐县| 肥东县| 修文县| 宜黄县|