遺傳演算法與進化演算法

2021-08-20 00:15:14 字數 3330 閱讀 1172

2023年7月1日c.r.達爾文與a.r.華萊士在倫敦林奈學會上宣讀了演化論的**,至此進化理論深入人心,為廣大吃瓜群眾開闢了乙個思想的新的天地。而我們的機器學習大師們向來喜歡從生物學家那裡找靈感,神經網路的靈感據說來自於人體的神經元,而根據演化論的思想,我們的大師們提出了遺傳演算法和進化演算法。(其實我覺得我們的大師們只是給自己發明的東西找個勉強站得住腳的理由吧,哈哈。)

遺傳演算法是**生物遺傳學和自然選擇機理,通過人工方式所構造的一類搜尋演算法,從某種程度上說遺傳演算法是對生物進化過程進行的數學方式**。霍蘭德(holland)在他的著作《adaptation in natural and artificial systems》首次提出遺傳演算法,並主要由他和他的學生發展起來的。其主要思想是生物種群的生存過程普遍遵循達爾文進化準則,群體中的個體根據對環境的適應能力而被大自然所選擇或淘汰。進化過程的結果反映在個體的結構上,其染色體包含若干基因,相應的表現型和基因型的聯絡體現了個體的外部特性與內部機理間邏輯關係。通過個體之間的交叉、變異來適應大自然環境。生物染色體用數學方式或計算機方式來體現就是一串數碼,仍叫染色體,有時也叫個體;適應能力是對應著乙個染色體的乙個數值來衡量;染色體的選擇或淘汰則按所面對的問題是求最大還是最小來進行。

抄了那麼多的廢話,其實本質上,遺傳演算法就是在乙個解空間上,隨機的給定一組解,這組解稱為父親種群,通過這組解的交叉,變異(一會再解釋這幾個概念),構建出新的解,稱為下一代種群,然後在目前已有的所有解(父親種群和下一代種群)中抽取表現好的解組成新的父親種群,然後繼續上面的過程,直到達到了迭代條件或者獲取到了最優解(一般都是區域性最優解)。

就像生物進化一樣,一群生物,不適應環境的被淘汰了,剩下來的生物適應環境,所以他們會產生後代繼承他們的優秀基因(這裡也包含了基因的變異),他們的後代也是這樣一直被自然選擇下去,直到最後必然會產生最適應環境的個體。

下圖表示了遺傳演算法的乙個基本框架,

下面我們來解釋下這個流程圖裡面的一些概念

所謂的適應度,本質上可以理解為乙個代價函式,或者乙個規則,通過對初始種群中的個體計算適應度,能夠得到對初始種群中的個體是否優劣的乙個度量

選擇操作是根據種群中的個體的適應度函式值所度量的優、劣程度決定它在下一代是被淘汰還是被遺傳。

交叉操作是將選擇的兩個個體p1

p

1和 p2

p

2作為父母節點,將兩者的部分碼值進行交換。假設有下面的兩個節點的二進位制編碼表示:

隨機產生乙個1到7之間的隨機數,假設為3,則將p1

p

1和 p2

p

2的低三位進行互換,如下圖所示,就完成了交叉操作:

當然這個只是非常簡單的交叉方法,業界常用的交叉方法為模擬二進位制交叉,後面我們會繼續介紹這種方法。

變異操作就是改變節點p2

p

2的二進位制編碼的某些未知上的馬尾的數值,如下所示:11

0111

1 隨機產生乙個1到8之間的隨機數,假設為3,則將編碼的第三位進行變異,將1變為0,如下圖所示,就完成了交叉操作:11

0110

1 這個依舊是一種簡單的變異操作,業界常用的變異操作方法有高斯變異,柯西變異等。

通過上面的操作,我們介紹了遺傳演算法的大概流程,那麼現在還剩下乙個問題,演算法是否收斂,這個才是演算法最關鍵的。

radolph在文獻[radolph g. convergence analysis of canonical genetic algorithms. ieee transactions on neural network, 1994,5(1): 96-101.]中證明了一般的遺傳演算法不一定收斂,只有每代儲存了最優個體時才收斂。

進化演算法包括遺傳演算法、進化程式設計、進化規劃和進化策略等等,進化演算法的基本框架還是簡單遺傳演算法所描述的框架,但在進化的方式上有較大的差異,選擇、交叉、變異、種群控制等有很多變化,進化演算法的大致框圖可描述如下圖所示:

同遺傳演算法一樣,進化演算法的收斂性也是在儲存最優個體時通用的進化計算是收斂的。但進化演算法的很多結果是從遺傳演算法推過去的。

遺傳演算法對交叉操作要看重一些,認為變異操作是演算法的輔助操作;而進化規劃和進化策略認為在一般意義上說交叉並不優於變異,甚至可以不要交叉操作。

在進行變異時用乙個均值為μ(μ實際上等於要變異的值)、方差為σ2的正態分佈的乙個隨機數來替換原有基因值。也就是意味著以此數值為期望,以σ2(任取)為方差的正態分佈中的乙個值替換掉此數值。

高斯變異的區域性搜尋能力較好,但是引導個體跳出區域性較優解的能力較弱,不利於全域性收斂

多目標優化研究多於乙個的目標函式在給定區域上的最優化,在很多實際問題中,例如經濟、管理、軍事、科學和工程設計等領域,衡量乙個方案的好壞往往難以用乙個指標來判斷,而需要用多個目標來比較,而這些目標有時不甚協調,甚至是矛盾的。因此多目標優化大多數場景下無法得到在各個目標上都達到最優的結果。只能達到pareto最優

所謂的pareto最優就是指下圖所描述的場景

在多目標的優化過程中,如果對於乙個點,不存在另外乙個點在目標函式上比他更優,那麼稱這些最優的點組成的集合(點後者面或者其他空間結構)為pareto最優。如圖所示,c點無論在f1還是f2上都比a點要打,那麼這個c點就不是pareto最優的。而對於a點和b點,無法找出任何乙個點在兩個維度上都比a或者b優,因此這兩個點是pareto最優的。

pareto最優的是有實際意義的,pareto最優也就意味著沒有辦法使任何乙個人獲得更多而不損失其他人的利益,如果可以,那麼這個就不是pareto最優的,pareto最優是一種模型上的最優。舉個例子分10個蘋果給3個小朋友,每個人3個,那麼這個狀態就不是pareto最優的,因為還可以把乙個蘋果給乙個孩子,而不減少其他孩子的蘋果。如果給了乙個孩子4個蘋果,另外兩個孩子三個蘋果,那麼如果想要給第乙個孩子5個蘋果。那麼久必然從另兩個孩子手中拿走乙個,這個就是pareto最優的。

多目標優化的目的就是得到pareto最優

目前看,遺傳演算法在工業界應用比較廣泛,但是比較悲劇的是和神經網路一樣,數學原理依舊不是很清晰,只不過演算法效果比較好罷了,這也是一種遺憾。

進化演算法 遺傳演算法

一 能解決的問題 如果你需要解決乙個問題,這個問題的每乙個可能的解均可以用位串來表示,那麼遺傳演算法就能解決這個問題。二 術語 個體 每乙個可能的解 種群 一群個體 基因 個體中位的乙個序列包含著個體的一些特徵資訊,這個序列被稱為基因 染色體 乙個個體中全部基因的集合 基因型 特定的基因被稱為基因型...

CI 模擬進化與遺傳演算法

模擬進化計算 simulated evolutionary computation 是近二十年來資訊科學 人工智慧與電腦科學的一大研究領域,由此所派生的求解優化問題的仿生類演算法 遺傳演算法 演化策略 進化程式 由於其鮮明的生物背景 新穎的設計原理 獨特的分析方法和成功的應用實踐,正日益形成全域性搜...

遺傳演算法之花朵進化

以下 實現了乙個簡單的花朵進化的模擬過程。花朵的種群數量是10,共進化了50代。通過執行程式,你會發現通過不斷的進化,種群的總的適應環境的能力在逐步提高 fitness的值下降 實現 using system using system.collections.generic using system...