遺傳演算法的概念

來源:互聯網
上載者:User

遺傳演算法的概念是建立在自然選擇和自然遺傳學機理基礎上的迭代自適應機率性搜尋演算法,在1975年由Holland教授提出。

生物的進化是一個奇妙的最佳化過程,它通過選擇淘汰,突然變異,基因遺傳等規律產生適應環境變化的優良物種。遺傳演算法是根據生物進化思想而啟發得出的一種全域最佳化演算法。

遺傳演算法的概念最早是由Bagley J.D在1967年提出的;而開始遺傳演算法的理論和方法的系統性研究的是1975年,這一開創性工作是由Michigan大學的J.H.Holland所實行。當時,其主要目的是說明自然和人工系統的自適應過程。

遺傳演算法簡稱GA(Genetic Algorithm),在本質上是一種不依賴具體問題的直接搜尋方法。遺傳演算法在模式識別、神經網路、影像處理、機器學習、工業最佳化控制、自適應控制、生物科學、社會科學等方面都得到應用。在人工智慧研究中,現在人們認為“遺傳演算法、自適應系統、細胞自動機、混沌理論與人工智慧一樣,都是對今後十年的計算技術有重大影響的關鍵技術”。

3.2.1 遺傳演算法的基本概念

遺傳演算法的基本思想是基於Darwin進化論和Mendel的遺傳學說的。

Darwin進化論最重要的是適者生存原理。它認為每一物種在發展中越來越適應環境。物種每個個體的基本特徵由後代所繼承,但後代又會產生一些異於父代的新變化。在環境變化時,只有那些熊適應環境的個體特徵方能保留下來。

Mendel遺傳學說最重要的是基因遺傳原理。它認為遺傳以密碼方式存在細胞中,並以基因形式包含在染色體內。每個基因有特殊的位置並控制某種特殊性質;所以,每個基因產生的個體對環境具有某種適應性。基因突變和基因雜交可產生更適應於環境的後代。經過存優去劣的自然淘汰,適應性高的基因結構得以儲存下來。

由於遺傳演算法是由進化論和遺傳學機理而產生的直接搜尋最佳化方法;故而在這個演算法中要用到各種進化和遺傳學的概念。這些概念如下:

一、串(String)

它是個體(Individual)的形式,在演算法中為二進位串,並且對應於遺傳學中的染色體(Chromosome)。

二、群體(Population)

個體的集合稱為群體,串是群體的元素

三、群體大小(Population Size)

在群體中個體的數量稱為群體的大小。

四、基因(Gene)

基因是串中的元素,基因用於表示個體的特徵。例如有一個串S=1011,則其中的1,0,1,1這4個元素分別稱為基因。它們的值稱為等位基因(Alletes)。

五 、基因位置(Gene Position)

一個基因在串中的位置稱為基因位置,有時也簡稱基因位。基因位置由串的左向右計算,例如在串S=1101中,0的基因位置是3。基因位置對應於遺傳學中的地點(Locus)。

六、基因特徵值(Gene Feature)

在用串表示整數時,基因的特徵值與位元的權一致;例如在串S=1011中,基因位置3中的1,它的基因特徵值為2;基因位置1中的1,它的基因特徵值為8。

七、串結構空間SS

在串中,基因任意組合所構成的串的集合。基因操作是在結構空間中進行的。串結構空間對應於遺傳學中的基因型(Genotype)的集合。

八、參數空間SP

這是串空間在物理系統中的映射,它對應於遺傳學中的表現型(Phenotype)的集合。

九、非線性

它對應遺傳學中的異位顯性(Epistasis)

十、適應度(Fitness)

表示某一個體對於環境的適應程度。

遺傳演算法還有一些其它的概念,這些概念在介紹遺傳演算法的原理和執行過程時,再進行說明。

3.2.2遺傳演算法的原理

遺傳演算法GA把問題的解表示成“染色體”,在演算法中也即是以二進位編碼的串。並且,在執行遺傳演算法之前,給出一群“染色體”,也即是假設解。然後,把這些假設解置於問題的“環境”中,並按適者生存的原則,從中選擇出較適應環境的“染色體”進行複製,再通過交叉,變異過程產生更適應環境的新一代“染色體”群。這樣,一代一代地進化,最後就會收斂到最適應環境的一個“染色體”上,它就是問題的最優解。

一、遺傳演算法的目的

典型的遺傳演算法CGA(Canonical Genetic Algorithm)通常用於解決下面這一類的靜態最佳化問題:

考慮對於一群長度為L的二進位編碼bi,i=1,2,…,n;有

bi∈{0,1}L        (3-84)

給定目標函數f,有f(bi),並且

0<f(bi)<∞

同時
f(bi)≠f(bi+1)

求滿足下式

max{f(bi)|bi∈{0,1}L}            (3-85)

的bi。

很明顯,遺傳演算法是一種最佳化方法,它通過進化和遺傳機理,從給出的原始解群中,不斷進化產生新的解,最後收斂到一個特定的串bi處,即求出最優解。

二、遺傳演算法的基本原理

長度為L的n個二進位串bi(i=1,2,…,n)組成了遺傳演算法的初解群,也稱為初始群體。在每個串中,每個二進位位就是個體染色體的基因。根據進化術語,對群體執行的操作有三種:

1.選擇(Selection)

這是從群體中選擇出較適應環境的個體。這些選中的個體用於繁殖下一代。故有時也稱這一操作為再生(Reproduction)。由於在選擇用於繁殖下一代的個體時,是根據個體對環境的適應度而決定其繁殖量的,故而有時也稱為非均勻再生(differential reproduction)。

2.交叉(Crossover)

這是在選中用於繁殖下一代的個體中,對兩個不同的個體的相同位置的基因進行交換,從而產生新的個體。

3.變異(Mutation)

這是在選中的個體中,對個體中的某些基因執行異向轉化。在串bi中,如果某位基因為1,產生變異時就是把它變成0;反亦反之。

遺傳演算法的原理可以簡要給出如下:

choose an intial population

determine the fitness of each individual

perform selection

repeat

    perform crossover

    perform mutation

    determine the fitness of each individual

    perform selection

until some stopping criterion applies

這裡所指的某種結束準則一般是指個體的適應度達到給定的閥值;或者個體的適應度的變動率為零。

三、遺傳演算法的步驟和意義

1.初始化

選擇一個群體,即選擇一個串或個體的集合bi,i=1,2,...n。這個初始的群體也就是問題假設解的集合。一般取n=30-160。

通常以隨機方法產生串或個體的集合bi,i=1,2,...n。問題的最優解將通過這些初始假設解進化而求出。

2.選擇

根據適者生存原則選擇下一代的個體。在選擇時,以適應度為選擇原則。適應度準則體現了適者生存,不適應者淘汰的自然法則。

給出目標函數f,則f(bi)稱為個體bi的適應度。以

...(3-86)

為選中bi為下一代個體的次數。

顯然.從式(3—86)可知:

(1)適應度較高的個體,繁殖下一代的數目較多。

(2)適應度較小的個體,繁殖下一代的數目較少;甚至被淘汰。

這樣,就產生了對環境適應能力較強的後代。對於問題求解角度來講,就是選擇出和最優解較接近的中間解。

選擇的方法有:

適應度比例法
期望值法
排位次法
精華儲存法
3.交叉
對於選中用於繁殖下一代的個體,隨機地選擇兩個個體的相同位置,按交叉機率P。在選中的位置實行交換。這個過程反映了隨機資訊交換;目的在於產生新的基因組合,也即產生新的個體。交叉時,可實行單點交叉或多點交叉。

例如有個體

S1=100101

S2=010111

選擇它們的左邊3位進行交叉操作,則有

S1=010101

S2=100111

一般而言,交叉幌宰P。取值為0.25—0.75。

4.變異

根據生物遺傳中基因變異的原理,以變異機率Pm對某些個體的某些位執行變異。在變異時,對執行變異的串的對應位求反,即把1變為0,把0變為1。變異機率Pm與生物變異極小的情況一致,所以,Pm的取值較小,一般取0.01-0.2。

例如有個體S=101011。

對其的第1,4位置的基因進行變異,則有

S'=001111

單靠變異不能在求解中得到好處。但是,它能保證演算法過程不會產生無法進化的單一群體。因為在所有的個體一樣時,交叉是無法產生新的個體的,這時只能靠變異產生新的個體。也就是說,變異增加了全域最佳化的特質。

5.全域最優收斂(Convergence to the global optimum)

當最優個體的適應度達到給定的閥值,或者最優個體的適應度和群體適應度不再上升時,則演算法的迭代過程收斂、演算法結束。否則,用經過選擇、交叉、變異所得到的新一代群體取代上一代群體,並返回到第2步即選擇操作處繼續迴圈執行。

圖3—7中表示了遺傳演算法的執行過程。

3.2.3遺傳演算法的應用

遺傳演算法在很多領域都得到應用;從神經網路研究的角度上考慮,最關心的是遺傳演算法在神經網路的應用。在遺傳演算法應用中,應先明確其特點和關鍵問題,才能對這種演算法深入瞭解,靈活應用,以及進一步研究開發。

一、遺傳演算法的特點

1.遺傳演算法從問題解的中集開始嫂索,而不是從單個解開始。

這是遺傳演算法與傳統最佳化演算法的極大區別。傳統最佳化演算法是從單個初始值迭代求最優解的;容易誤入局部最優解。遺傳演算法從串集開始搜尋,複蓋面大,利於全域擇優。

2.遺傳演算法求解時使用特定問題的資訊極少,容易形成通用演算法程式。

由於遺傳演算法使用適應值這一資訊進行搜尋,並不需要問題導數等與問題直接相關的資訊。遺傳演算法只需適應值和串編碼等通用資訊,故幾乎可處理任何問題。

3.遺傳演算法有極強的容錯能力

遺傳演算法的初始串集本身就帶有大量與最優解甚遠的資訊;通過選擇、交叉、變異操作能迅速排除與最優解相差極大的串;這是一個強烈的濾波過程;並且是一個並行濾波機制。故而,遺傳演算法有很高的容錯能力。

4.遺傳演算法中的選擇、交叉和變異都是隨機操作,而不是確定的精確規則。

這說明遺傳演算法是採用隨機方法進行最優解搜尋,選擇體現了向最優解迫近,交叉體現了最優解的產生,變異體現了全域最優解的複蓋。

5.遺傳演算法具有隱含的並行性

遺傳演算法的基礎理論是圖式定理。它的有關內容如下:

(1)圖式(Schema)概念

一個基因串用符號集{0,1,*}表示,則稱為一個因式;其中*可以是0或1。例如:H=1x x 0 x x是一個圖式。

(2)圖式的階和長度

圖式中0和1的個數稱為圖式的階,並用0(H)表示。圖式中第1位元字和最後位元字間的距離稱為圖式的長度,並用δ(H)表示。對於圖式H=1x x0x x,有0(H)=2,δ(H)=4。

(3)Holland圖式定理

低階,短長度的圖式在群體遺傳過程中將會按指數規律增加。當群體的大小為n時,每代處理的圖式數目為0(n3)。

遺傳演算法這種處理能力稱為隱含並行性(Implicit Parallelism)。它說明遺傳演算法其內在具有平行處理的特質。

二、遺傳演算法的應用關鍵

遺傳演算法在應用中最關鍵的問題有如下3個

1.串的編碼方式

這本質是問題編碼。一般把問題的各種參數用二進位編碼,構成子串;然後把子串拼接構成“染色體”串。串長度及編碼形式對演算法收斂影響極大。

2.適應函數的確定

適應函數(fitness function)也稱對象函數(object function),這是問題求解品質的測量函數;往往也稱為問題的“環境”。一般可以把問題的模型函數作為對象函數;但有時需要另行構造。

3.遺傳演算法自身參數設定

遺傳演算法自身參數有3個,即群體大小n、交叉機率Pc和變異機率Pm。

群體大小n太小時難以求出最優解,太大則增長收斂時間。一般n=30-160。交叉機率Pc太小時難以向前搜尋,太大則容易破壞高適應值的結構。一般取Pc=0.25-0.75。變異機率Pm太小時難以產生新的基因結構,太大使遺傳演算法成了單純的隨機搜尋。一般取Pm=0.01—0.2。

三、遺傳演算法在神經網路中的應用

遺傳演算法在神經網路中的應用主要反映在3個方面:網路的學習,網路的結構設計,網路的分析。

1.遺傳演算法在網路學習中的應用

在神經網路中,遺傳演算法可用於網路的學習。這時,它在兩個方面起作用

(1)學習規則的最佳化

用遺傳演算法對神經網路學習規則實現自動最佳化,從而提高學習速率。

(2)網路權係數的最佳化

用遺傳演算法的全域最佳化及隱含並行性的特點提高權係數最佳化速度。

2.遺傳演算法在網路設計中的應用

用遺傳演算法設計一個優秀的神經網路結構,首先是要解決網路結構的編碼問題;然後才能以選擇、交叉、變異操作得出最優結構。編碼方法主要有下列3種:

(1)直接編碼法

這是把神經網路結構直接用二進位串表示,在遺傳演算法中,“染色體”實質上和神經網路是一種映射關係。通過對“染色體”的最佳化就實現了對網路的最佳化。

(2)參數化編碼法

參數化編碼採用的編碼較為抽象,編碼包括網路層數、每層神經元數、各層互連方式等資訊。一般對進化後的最佳化“染色體”進行分析,然後產生網路的結構。

(3)繁衍生長法

這種方法不是在“染色體”中直接編碼神經網路的結構,而是把一些簡單的生長文法規則編碼入“染色體”中;然後,由遺傳演算法對這些生長文法規則不斷進行改變,最後產生適合所解的問題的神經網路。這種方法與自然界生物地生長進化相一致。

3.遺傳演算法在網路分析中的應用

遺傳演算法可用於分析神經網路。神經網路由於有分布儲存等特點,一般難以從其拓撲結構直接理解其功能。遺傳演算法可對神經網路進行功能分析,性質分析,狀態分析。

遺傳演算法雖然可以在多種領域都有實際應用,並且也展示了它潛力和寬廣前景;但是,遺傳演算法還有大量的問題需要研究,目前也還有各種不足。首先,在變數多,取值範圍大或無給定範圍時,收斂速度下降;其次,可找到最優解附近,但無法精確確定最擾解位置;最後,遺傳演算法的參數選擇尚未有定量方法。對遺傳演算法,還需要進一步研究其數學基礎理論;還需要在理論上證明它與其它最佳化技術的優劣及原因;還需研究硬體化的遺傳演算法;以及遺傳演算法的通用編程和形式等。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.