㈠ 遺傳演算法原理簡介
遺傳演算法(Genetic Algorithm, GA)是一種進化計算(Evolutionary Computing)演算法,屬於人工智慧技術的一部分。遺傳演算法最早是由John Holland和他的學生發明並改進的,源於對達芬奇物種進化理論的模仿。在物種進化過程中,為了適應環境,好的基因得到保留,不好的基因被淘汰,這樣經過很多代基因的變化,物種的基因就是當前自然環境下適應度最好的基因。該演算法被廣泛應用於優化和搜索中,用於尋求最優解(或最優解的近似),其最主要的步驟包括交叉(crossover)和突變(mutation)。
所有的生物體都由細胞組成,每個細胞中都包含了同樣的染色體(chromosome)。染色體由一串DNA組成,我們可以簡單地把一個生物個體表示為一條染色體。每條染色體上都包含著基因,而基因又是由多個DNA組成的。每個基因都控制著個體某個性狀的表達,例如眼睛的顏色、眼皮的單雙等。在物種繁衍的過程中,首先發生交叉,來自於父母的染色體經過分裂和重組,形成後代的染色體。之後,後代有一定概率發生基因突變,即染色體上某個位置處的基因以一定概率發生變化。之後,對每一代都重復進行交叉和突變兩個步驟。對於每一個後代,我們可以通過一定的方式測量其適應度。適應度越好的個體,在下一次交叉中被選中的概率越大,它的基因越容易傳給下一代。這樣,後代的適應度就會越來越好,直到收斂到一個穩定值。
在優化問題中,可行解總是有很多個,我們希望尋找一個最優解,它相對於其他可行解來說具有更好的適應度(即目標函數值更大或更小)。每個可行解就是一個「生物個體」,可以表示為狀態空間中的一個點和適應度。每個解都是一個經過編碼的序列,已二進制編碼為例,每個解都是一個二進制序列。這樣每個染色體就是一個二進制序列。遺傳演算法從從一組可行解開始,稱為population,從population中隨機選擇染色體進行交叉產生下一代。這一做法的基於下一代的適應度會好於上一代。遺傳演算法的過程如下:
終止條件可以是達到了最大迭代次數,或者是前後連續幾代的最優染色體的適應度差值小於一個閾值。以上演算法描述也許還不夠直觀,我們舉例說明。假設解可以用二進制編碼表示,則每個染色體都是一個二進制序列。假設序列長度為16,則每個染色體都是一個16位的二進制序列:
首先,我們隨機生成一個population,假設population size為20,則有20個長度為16的二進制序列。計算每個染色體的適應度,然後選取兩個染色體進行交叉,如下圖所示。下圖在第6為上將染色體斷開再重組,斷開的位置是可以隨機選擇的。當然,斷裂位置也可以不止一個。可以根據具體問題選擇具體的交叉方式來提升演算法性能。
之後,隨機選取後代染色體上某個基因發生基因突變,突變的位置是隨機選取的。並且,基因突變並不是在每個後代上都會發生,只是有一定的概率。對於二進制編碼,基因突變的方式是按位取反:
上述例子是關於二進制編碼的,像求解一元函數在某個區間內的最大最小值就可以使用二進制編碼。例如,求解函數f(x)=x+sin(3x)+cos(3x)在區間[0,6]內的最小值。假設我們需要最小值點x保留4位小數,那麼求解區間被離散成60000個數。因為2 {15}<60000<2 {16},所以,需要16位二進制數來表示這60000個可能的解。其中0x0000表示0,0x0001表示0.0001,以此類推。針對這個例子,文末給出了demo code.
然而,在排序問題中無法使用二進制編碼,應該採用排列編碼(permutation encoding)。例如有下面兩個染色體:
交叉:隨機選取一個交叉點,從該出將兩個染色體斷開。染色體A的前部分組成後代1的前部分,然後掃描染色體B,如果出現了後代1中不包含的基因,則將其順序加入後代1中。同理,染色體B的前部分組成了後代2的前部分,掃描染色體A獲得後代2的後部分。注意,交叉的方式多種多樣,此處只是舉出其中一種方式。
( 1 5 3 2 6 | 4 7 9 8) + ( 8 5 6 7 2 | 3 1 4 9) => ( 1 5 3 2 6 8 7 4 9) + ( 8 5 6 7 2 1 3 4 9)
突變:對於一個染色體,隨機選中兩個基因互換位置。例如第3個基因和倒數第2個基因互換:
(1 5 3 2 6 8 7 4 9) => (1 5 4 2 6 8 7 3 9)
此外還有值編碼(value encoding)和樹編碼(tree encoding)等,具體例子可以參考這個鏈接: http://obitko.com/tutorials/genetic-algorithms/encoding.php
在實際的遺傳演算法中,往往會保留上一代中的少數幾個精英(elite),即將上一代population中適應度最好的幾個染色體加入到後代的poulation中,同時去除後代population中適應度最差的幾個染色體。通過這個策略,如果在某次迭代中產生了最優解,則最優解能夠一直保留到迭代結束。
用GA求函數最小值的demo code: https://github.com/JiaxYau/GA_test
參考資料 :
[1] Introction to Genetic Algorithm, http://obitko.com/tutorials/genetic-algorithms/index.php
[2] Holland J H. Adaption in natural and artificial systems
㈡ 十進制遺傳演算法簡介
8.2.1 反演優化問題
用遺傳演算法反演水文地質參數[38,61],首先要構造優化問題。設區域有m個觀測值,則構造誤差函數為:
含水層參數識別方法
其中:為實測值,hi (p1,p2,…,pn)為計算值。和hi 具有相同的時間和坐標點,p1,p2,…,pn 為參數,為書寫方便記 P=[p1,p2,…,pn]。
模型選定之後,通過改變參數使誤差函數達到最小值。那麼本問題就轉化為約束條件下的優化問題(8-2)。
含水層參數識別方法
8.2.2 遺傳演算法步驟
可用遺傳演算法求解優化問題(8-2),具體步驟如下。
1)解的表示結構。用十進制浮點向量,表示優化問題的解。每個染色體由一個浮點向量表示,其長度和解向量相同。這里用(p1,p2,…,pn)表示最優化問題(8-2)的解。相應的染色體為V=(p1,p2,…,pn)。
2)初始化過程。定義整數Pop-Size作為染色體的個數,並且隨機產生Pop-Size個初始染色體。從優化問題的約束條件可以看出,(p1,p2,…,pn)的可行域是一個長方形,我們用隨機的方法可以得到Pop-Size個初始可行的染色體。
檢驗(p1,p2,…,pn)是否為可行染色體,如果是,就保留。如果不是就再產生一組可行染色體。直到產生Pop-Size個初始可行的染色體V1,V2,…,VPop-Size。
3)評價函數。評價函數(用eval(V)表示)用來對種群中的每個染色體V設定一個概率,以使該染色體被選擇的可能性與其種群中其他染色體的適應性成比例。通過輪盤賭,適應性強的染色體被選擇產生後代的機會大。在實際應用中我們採取如下方法確定評價函數。
設目前該代中的染色體為V1,V2,…,VPop-Size,可以根據染色體的序進行再分配,無論採用何種數學規劃均可以將染色體由好到壞進行重排,就是說,一個染色體越好,其序號越小。設參數α∈(0,1)給定,定義於序的評價函數為:
含水層參數識別方法
i=1意味著染色體是最好的,i=Pop-Size說明是最差的。
4)選擇過程。選擇過程是以旋轉賭輪Pop-Size次為基礎的。每次旋轉都為新的種群選擇一個染色體。賭輪是按每個染色體的適應度進行選擇染色體的。其過程如下。
A.對每個染色體Vi,計算累積概率qi
含水層參數識別方法
B.從區間(0,qPop-Size)中產生一個隨機數r。
C.若qi-1<r≤qi,則選擇第i個染色體Vi(1≤i≤Pop-Size)。
D.重復步驟②和步驟③共Pop-Size次,這樣可以得到Pop-Size個復制的染色體。上述過程並沒有要求滿足條件qPop-Size=1。實際上,可以用qPop-Size除以所有的qi,使qPop-Size=1,新得到的概率同樣與適應度成比例。
5)交叉操作。設Pc為交叉操作的概率,這個概率說明種群中有期望值為Pc·Pop
-Size個染色體進行交叉操作。為確定交叉操作的父代,從i=1到Pop-Size重復以下過程:從[0,1]中產生隨機數r,如果r<Pc,則選擇Vi作為一個父代。
用V′1,V′2,V′3,…表示上面選擇的父代,並把他們隨機分為交叉對。
(V′1,V′2),(V′3,V′4),(V′5,V′6),…
現僅以第一對為例說明交叉操作的過程,從(0,1)區間產生一個隨機數c,然後按下式進行交叉操作,並產生兩個後代X和Y
X=cV′1+(1-c)V′2,Y=(1-c)V′1+cV′2
檢驗新產生的後代是否為可行解,如果可行,用它們代替父代;否則,保留其中可行的。然後,產生新的隨機數c,重新進行交叉操作,直到得到兩個可行的後代為止。
6)變異操作。設參數Pm為遺傳操作中的變異概率,為確定變異操作的父代,從i=1到Pop-Size重復以下過程:從[0,1]中產生隨機數r,如果r<Pm,則選擇Vi作為一個變異父代。先選擇一個變異方向D,M為一個隨機數,則可以用下式:
X=V+M·D
為新後代,檢驗X是否為可行解。如不可行,改變隨機數M或變異方向D直到X為可行解為止。
另一種產生變異的操作是在可行域中另外產生一個染色體,或染色體中的一個元素。
7)遺傳演算法的一般過程。遺傳演算法的一般過程可歸納如下:
輸入參數Pop-Size,Pc,Pm;
通過初始化過程產生Pop-Size個染色體;
重復
根據某抽樣機制選擇染色體;
對染色體進行交叉和變異操作;
計算所有染色體的評價函數;
滿足終止條件時終止,否則重復以上三個過程。
㈢ 能通俗的介紹一下什麼是遺傳演算法嗎
遺傳演算法(Genetic Algorithms or GAs)是基於自然選擇和自然遺傳機制的搜索演算法,它是一種有效的解決最優化問題的方法。遺傳演算法最早是由美國Michigan大學的John Holland和他的同事及學生提出的。類似於自然界演化的基本法則,「適者生存」是遺傳演算法的核心機制,同樣,「復制(reproce)」、「雜交(crossover)」、「變異(mutation)」等自然界的生物演化規則在遺傳演算法中都得到類似的體現。
用遺傳演算法解最優化問題,首先應對可行域中的個體進行編碼,然後在可行域中隨機挑選指定群體大小的一些個體組成作為進化起點的第一代群體,並計算每個個體的目標函數值,即該個體的適應度。接著就像自然界中一樣,利用選擇機制從群體中隨機挑選個體作為繁殖過程前的個體樣本。選擇機制保證適應度較高的個體能夠保留較多的樣本;而適應度較低的個體則保留較少的樣本,甚至被淘汰。在接下去的繁殖過程中,遺傳演算法提供了交叉和變異兩種演算法對挑選後的樣本進行交換和基因突變。交叉演算法交換隨機挑選的兩個個體的某些位,變異運算元則直接對一個個體中的隨機挑選的某一位進行突變。這樣通過選擇和繁殖就產生了下一代群體。重復上述選擇和繁殖過程,直到結束條件得到滿足為止。進化過程最後一代中的最優解就是用遺傳演算法解最優化問題所得到的最終結果。
與其他演算法相比,遺傳演算法主要有以下四個方面的不同: 遺傳演算法所面向的對象是參數集的編碼,而不是參數集本身; 遺傳演算法的搜索是基於若干個點,而不是基於一個點; 遺傳演算法利用目標函數的信息,而不是導數或者其他輔助信息; 遺傳演算法的轉化規則是概率性的,而不是確定性的。
㈣ 遺傳演算法原理與應用實例的介紹
《遺傳演算法原理與應用實例》主要結合應用實例系統討論、介紹遺傳演算法原理及其應用,主要內容包括:遺傳演算法的基本原理和數學機理、解決連續問題優化的遺傳演算法和分布式遺傳演算法、遺傳演算法的實現技術、遺傳演算法應用實例,並給出了兩個典型的遺傳演算法源程序。《遺傳演算法原理與應用實例》在詳細介紹遺傳演算法理論與方法的同時,還給_出了基於遺傳演算法的費托合成反應動力學模型參數優化的詳細設計應用。
㈤ 遺傳演算法的迭代次數是怎麼確定的,與什麼有關
1. 遺傳演算法簡介
遺傳演算法是用於解決最優化問題的一種搜索演算法,演算法的整體思路是建立在達爾文生物進化論「優勝劣汰」規律的基礎上。它將生物學中的基因編碼、染色體交叉、基因變異以及自然選擇等概念引入最優化問題的求解過程中,通過不斷的「種群進化」,最終得到問題的最優解。
2. 遺傳演算法實現步驟
在講下面幾個基於生物學提出的概念之前,首先我們需要理解為什麼需要在最優化問題的求解中引入生物學中的各種概念。
假設我們需要求一個函數的最大值,但這個函數異常復雜以至於無法套用一般化的公式,那麼就會想到:如果可以將所有可能的解代入方程,那麼函數最大值所對應的那個解就是問題的最優解。但是,對於較復雜的函數來說,其可能的解的個數的數量級是我們所無法想像的。因此,我們只好退而求其次,只代入部分解並在其中找到最優解。那麼這樣做的核心就在於如何設定演算法確定部分解並去逼近函數的最優解或者較好的局部最優解。
遺傳演算法就是為了解決上述問題而誕生的。假設函數值所對應的所有解是一個容量超級大的種群,而種群中的個體就是一個個解,接下去遺傳演算法的工作就是讓這個種群中的部分個體去不斷繁衍,在繁衍的過程中一方面會發生染色體交叉而產生新的個體。另一方面,基因變異也會有概率會發生並產生新的個體。接下去,只需要通過自然選擇的方式,淘汰質量差的個體,保留質量好的個體,並且讓這個繁衍的過程持續下去,那麼最後就有可能進化出最優或者較優的個體。這么看來原來最優化問題居然和遺傳變異是相通的,而且大自然早已掌握了這樣的機制,這著實令人興奮。為了將這種機制引入最優化問題並利用計算機求解,我們需要將上述提到的生物學概念轉化為計算機能夠理解的演算法機制。
下面介紹在計算機中這種遺傳變異的機制是如何實現的:
基因編碼與解碼:
在生物學中,交叉與變異能夠實現是得益於染色體上的基因,可以想像每個個體都是一串超級長的基因編碼,當兩個個體發生交叉時,兩條基因編碼就會發生交換,產生的新基因同時包含父親和母親的基因編碼。在交叉過程中或者完成後,某些基因點位又會因為各種因素發生突變,由此產生新的基因編碼。當然,發生交叉和變異之後的個體並不一定優於原個體,但這給了進化(產生更加優秀的個體)發生的可能。
因此,為了在計算機里實現交叉和變異,就需要對十進制的解進行編碼。對於計算機來說其最底層的語言是由二進制0、1構成的,而0、1就能夠被用來表示每個基因點位,大量的0、1就能夠表示一串基因編碼,因此我們可以用二進制對十進制數進行編碼,即將十進制的數映射到二進制上。但是我們並不關心如何將十進制轉換為二進制的數,因為計算機可以隨機生成大量的二進制串,我們只需要將辦法將二進制轉化為十進制就可以了。
二進制轉換為十進制實現方式:
假設,我們需要將二進制映射到以下范圍:
首先,將二進制串展開並通過計算式轉化為[0,1]范圍內的數字:
將[0,1]范圍內的數字映射到我們所需要的區間內:
交叉與變異:
在能夠用二進制串表示十進制數的基礎上,我們需要將交叉與變異引入演算法中。假設我們已經獲得兩條二進制串(基因編碼),一條作為父親,一條作為母親,那麼交叉指的就是用父方一半的二進制編碼與母方一半的二進制編碼組合成為一條新的二進制串(即新的基因)。變異則指的是在交叉完成產生子代的過程中,二進制串上某個數字發生了變異,由此產生新的二進制串。當然,交叉與變異並不是必然發生的,其需要滿足一定的概率條件。一般來說,交叉發生的概率較大,變異發生的概率較小。交叉是為了讓演算法朝著收斂的方向發展,而變異則是為了讓演算法有幾率跳出某種局部最優解。
自然選擇:
在成功將基因編碼和解碼以及交叉與變異引入演算法後,我們已經實現了讓演算法自動產生部分解並優化的機制。接下去,我們需要解決如何在演算法中實現自然選擇並將優秀的個體保留下來進而進化出更優秀的個體。
首先我們需要確定個體是否優秀,考慮先將其二進制串轉化為十進制數並代入最初定義的目標函數中,將函數值定義為適應度。在這里,假設我們要求的是最大值,則定義函數值越大,則其適應度越大。那是否在每一輪迭代過程中只需要按照適應度對個體進行排序並選出更加優秀的個體就可以了呢?事實上,自然選擇的過程中存在一個現象,並沒有說優秀的個體一定會被保留,而差勁的個體就一定被會被淘汰。自然選擇是一個概率事件,越適應環境則生存下去的概率越高,反之越低。為了遵循這樣的思想,我們可以根據之前定義的適應度的大小給定每個個體一定的生存概率,其適應度越高,則在篩選時被保留下來的概率也越高,反之越低。
那麼問題就來了,如何定義這種生存概率,一般來說,我們可以將個體適應度與全部個體適應度之和的比率作為生存概率。但我們在定義適應度時使用函數值進行定義的,但函數值是有可能為負的,但概率不能為負。因此,我們需要對函數值進行正數化處理,其處理方式如下:
定義適應度函數:
定義生存概率函數:
註:最後一項之所以加上0.0001是因為不能讓某個個體的生存概率變為0,這不符合自然選擇中包含的概率思想。
3. 遺傳算例
在這里以一個比較簡單的函數為例,可以直接判斷出函數的最小值為0,最優解為(0,0)
若利用遺傳演算法進行求解,設定交叉概率為0.8,變異概率為0.005,種群內個體數為2000,十進制數基因編碼長度為24,迭代次數為500次。
從遺傳演算法收斂的動態圖中可以發現,遺傳演算法現實生成了大量的解,並對這些解進行試錯,最終收斂到最大值,可以發現遺傳演算法的結果大致上與最優解無異,結果圖如下:
4. 遺傳演算法優缺點
優點:
1、 通過變異機制避免演算法陷入局部最優,搜索能力強
2、 引入自然選擇中的概率思想,個體的選擇具有隨機性
3、 可拓展性強,易於與其他演算法進行結合使用
缺點:
1、 遺傳演算法編程較為復雜,涉及到基因編碼與解碼
2、 演算法內包含的交叉率、變異率等參數的設定需要依靠經驗確定
3、 對於初始種群的優劣依賴性較強
㈥ 遺傳演算法的適度函數是什麼意思舉個例說明下最好通俗
適應度用於評價個體的優劣程度,適應度越大個體越好,反之適應度越小則個體越差;根據適應度的大小對個體進行選擇,以保證適應性能好的個體有更多的機會繁殖後代,使優良特性得以遺傳.因此,遺傳演算法要求適應度函數值必須是非負數,而在許多實際問題中,求解的目標通常是費用最小,而不是效益最大,因此需要將求最小的目標根據適應度函數非負原則轉換為求最大目標的形式。
----------------
如何通俗易懂地解釋遺傳演算法?有什麼例子?
遺傳演算法,核心是達爾文優勝劣汰適者生存的進化理論的思想。
我們都知道一個種群,通過長時間的繁衍,種群的基因會向著更適應環境的趨勢進化,牛B個體的基因被保留,後代越來越多,適應能力低個體的基因被淘汰,後代越來越少。經過幾代的繁衍進化,留下來的少數個體,就是相對能力最強的個體了。
那麼在解決一些問題的時候,我們能不能學習這樣的思想,比如先隨機創造很多很多的解,然後找一個靠譜的評價體系,去篩選比較好的解,再用這些好的解像生小寶寶一樣生一堆可能更好的解,然後再篩再生,反復弄個幾代,得到的說不定就是近似最優解喲
說干就干,有一個經典組合問題叫「背包問題」,我們拿這種思路來試試
「背包問題(Knapsack problem)是一種組合優化的NP完全問題。問題可以描述為:給定一組物品,每種物品都有自己的重量和價格,在限定的總重量內,我們如何選擇,才能使得物品的總價格最高。問題的名稱來源於如何選擇最合適的物品放置於給定背包中。」
這個問題的衍生簡化問題「0-1背包問題」 增加了限制條件:每件物品只有一件,可以選擇放或者不放,更適合我們來舉例
這樣的問題如果數量少,當然最好選擇窮舉法
比如一共3件商品,用0表示不取,1表示取,那麼就一共有
000 001 010
011 100 101
110 111
這樣8種方案,然後讓計算機去累加和,與重量上限比較,留下來的解里取最大即可。
但如果商品數有300,3000,甚至3w種呢,計算量太大窮舉法可能就不適用了,這時如果遺傳演算法使用得當,就能在較短的時間內幫我們找到近似的最優解,我們繼續往下看:
新的問題是12件商品的0-1背包問題
我們先讓計算機隨機產生1000個12位的二級制數
把總重量超過背包上限的解篩掉
剩下的兩兩一對隨機交換「基因片段」產生下一代
交換前:
0000 1100 1101
0011 0101 0101
交換後:
0000 0101 1101
0011 1100 0101
再篩選,再交配,如此反復幾代,留下的解攜帶的「基因「差不多就是最好的了,怎麼樣跟生物進化是不是一模一樣?
其實還差點,生物繁殖過程中,新產生的基因是有一定幾率突變的,這是很多優良性狀的重要來源,遺傳演算法中可也不能忽略它
比如:
變異前:
000101100101
變異後:
000101110101
那也有人得疑惑了,我怎麼知道要讓哪個地方產生突變呢?其實蜘蛛俠NB之前,他也不知道蜘蛛咬在那能讓他變NB而不是SB,這就是一個概率問題。我們在設計演算法的時候,會給每個基因設置一個突變概率(當然是非常非常小了)同樣的在基因交換階段交換哪些基因呢,也是一個演算法設置問題。
總結一下,遺傳演算法應該有
一個基本函數:適度函數f(x)
三個基本操作:選擇,交叉,變異
一.適度函數
適度函數很好理解,其實就是指解的篩選標准,比如我剛才說的把所有超過上限重量的解篩選掉,但是不是有更好的篩選標准或者這個現有的標准根本就是個渣呢?這將直接影響最後結果的接近程度以及求解所耗費的時間,所以設置一個好的適度函數很重要
二.選擇
剛才為了大家理解方便,我直接讓所有解都參與了後續的交叉以及變異,但真實世界可不是這樣子的,因為也不是每個人都會結婚生子的對吧。
說直白點,所謂【屌絲注孤生】【工科男注孤生】什麼的還不是因為loser的基因不適合往下傳唄。不過實際情況是我們偶爾也能看到或聽到屌絲逆襲、鮮花牛糞之類勵志故事,只不過頻率比較低咯
沒錯,概率!在遺傳演算法中選擇也是個概率問題,在解的世界中(姑且這么稱呼吧)適度更高的高富帥們是不是應該有更高的概率被選去傳宗接代才合適呢?不過和現實世界一樣,適度低的屌絲解是要給人家一點希望的對不對?所以
在選擇一些解來產生下一代時,一種常用的選擇策略是 「比例選擇」,也就是個體被選中的概率與其適應度函數值成正比。假設群體的個體總數是M,那麼那麼一個體Xi被選中的概率為f(Xi)/( f(X1) + f(X2) + …….. + f(Xn) )
三.交叉
這是例子中詳細說到的,交換兩個解的部分」基因」,來構造兩個子代的解。
四.變異
在繁殖子代的過程中,新產生的解中的「基因」會以一定的概率出錯,稱為變異。我們可以吧變異發生的概率設置為Pm
五.基本遺傳演算法優化
精英主義:這是基本遺傳演算法的一種優化。目的是防止進化過程中產生的最優解被變異和交叉所破壞。《遺傳演算法原理及應用》介紹的最優保存策略是:即當前種群中適應度最高的個體不參與交叉運算和變異運算,而是用它來替換掉本代群體中經過交叉、變異等遺傳操作後所產生的適應度最低的個體。
後記:
其實不管是遺傳演算法,還是模擬退火演算法或者其他演算法,其本質都是借鑒自然界中的規則規律,人為的為問題設置了一個模擬模型,然後用大自然告訴我們的規律去找最優解,在理解這些演算法的時候,可以照著這個思路去走,一般能讓你快速撥雲見日,了解演算法的核心思想。
比如遺傳演算法,我們可以對比種群的進化,給問題設置的模型就是:
這樣參照著我們熟悉的知識體系,去理解學習,原來聽上去遙不可及的理論是不是一下就變得親切易懂了吧?
可是我們再看一些教科書或者就拿網路來說(怕也是摘抄的某本書上的段落)
真的是通篇不說人話啊!對已經了解這個演算法思想的人來說,還能勉強硬著頭皮看下去,但對入門者來說,這TMD簡直就是噩夢!而這完全是國內各種教材的通病!
我其實一直在想,教材面向的明明就是望門欲入的初學者,你不弄得生動活潑一點招徠門徒就算了,在一群幼兒園小朋友面前賣弄之乎者也還顯本事了是么!我是還記得我們學校的高數書編的有多麼生澀難懂,結果第一節課老教授上課時還說「我們不用同濟的版本,那本書太淺,不適合我們學校的學生」 可是在我和大多數同學看來,同濟版本的高數倒更像是為了要入門的同學編寫的教材,自己學校編的那本卻更像是給同行評閱炫耀作者深度的大部頭。
知識明明可以講的更有趣,讓人願意入其門來探個究竟。
作者:彈彈彈球
㈦ 遺傳演算法及其應用的內容簡介
本書系統全面地介紹了遺傳演算法的基本原理、設計方法及其並行實現,以及它在組合優化、機器學習、圖像處理、過程式控制制、進化神經網路、模糊模式識別和人工生命等方面的應用。
本書可作為高等院校計算機、無線電電子學、自動控制、生物醫學工程等有關專業高年級學生或研究生的教材和參考書,也可供從事人工智慧、信息處理研究和應用的科技人員學習參考。
㈧ 高分尋達人分別介紹下遺傳演算法和演化演算法,以及之間的聯系和區別
根據閱讀的資料,大概有以下判斷:
遺傳演算法是演化演算法中的一種。
遺傳演算法(Genetic Algorithm)是一類借鑒生物界的進化規律(適者生存,優勝劣汰遺傳機制)演化而來的隨機化搜索方法。它是由美國的J.Holland教授1975年首先提出,其主要特點是直接對結構對象進行操作,不存在求導和函數連續性的限定;具有內在的隱並行性和更好的全局尋優能力;採用概率化的尋優方法,能自動獲取和指導優化的搜索空間,自適應地調整搜索方向,不需要確定的規則。遺傳演算法的這些性質,已被人們廣泛地應用於組合優化、機器學習、信號處理、自適應控制和人工生命等領域。它是現代有關智能計算中的關鍵技術。
遺傳演算法是模擬達爾文的遺傳選擇和自然淘汰的生物進化過程的計算模型。它的思想源於生物遺傳學和適者生存的自然規律,是具有「生存+檢測」的迭代過程的搜索演算法。遺傳演算法以一種群體中的所有個體為對象,並利用隨機化技術指導對一個被編碼的參數空間進行高效搜索。其中,選擇、交叉和變異構成了遺傳演算法的遺傳操作;參數編碼、初始群體的設定、適應度函數的設計、遺傳操作設計、控制參數設定五個要素組成了遺傳演算法的核心內容。 作為一種新的全局優化搜索演算法,遺傳演算法以其簡單通用、魯棒性強、適於並行處理以及高效、實用等顯著特點,在各個領域得到了廣泛應用,取得了良好效果,並逐漸成為重要的智能演算法之一。
遺傳演算法是基於生物學的,理解或編程都不太難。下面是遺傳演算法的一般演算法:
創建一個隨機的初始狀態
初始種群是從解中隨機選擇出來的,將這些解比喻為染色體或基因,該種群被稱為第一代,這和符號人工智慧系統的情況不一樣,在那裡問題的初始狀態已經給定了。
評估適應度
對每一個解(染色體)指定一個適應度的值,根據問題求解的實際接近程度來指定(以便逼近求解問題的答案)。不要把這些「解」與問題的「答案」混為一談,可以把它理解成為要得到答案,系統可能需要利用的那些特性。
繁殖(包括子代突變)
帶有較高適應度值的那些染色體更可能產生後代(後代產生後也將發生突變)。後代是父母的產物,他們由來自父母的基因結合而成,這個過程被稱為「雜交」。
下一代
如果新的一代包含一個解,能產生一個充分接近或等於期望答案的輸出,那麼問題就已經解決了。如果情況並非如此,新的一代將重復他們父母所進行的繁衍過程,一代一代演化下去,直到達到期望的解為止。
並行計算
非常容易將遺傳演算法用到並行計算和群集環境中。一種方法是直接把每個節點當成一個並行的種群看待。然後有機體根據不同的繁殖方法從一個節點遷移到另一個節點。另一種方法是「農場主/勞工」體系結構,指定一個節點為「農場主」節點,負責選擇有機體和分派適應度的值,另外的節點作為「勞工」節點,負責重新組合、變異和適應度函數的評估。
http://ke..com/view/45853.html
演化演算法:
這部分的研究主要是提供具有演化特徵的演算法,已知的遺傳演算法是其中之一。許多新的演算法正在研究中。由於遺傳演算法的整體搜索策略和優化計算時不依賴於梯度信息,所以它的應用非常廣泛,尤其適合於處理傳統搜索方法難以解決的高度復雜的非線性問題。人工生命研究的重要內容就是進化現象,遺傳演算法是研究進化現象的重要方法之一
我國學者接觸這個領域較晚,目前尚未形成聲勢和有規模的研究隊伍。1997年夏天,在中科院基礎局、國家科委基礎司及中國國際經濟及技術交流中心的支持下,由中科院系統科學所和自動化研究所舉辦了第一次人工生命及進化機器人研討會[20]。與會者約60人。除去邀請了五位國際知名學者的學術報告之外,國內也有數名學者介紹了相關的研究成果。主要在數字生命、復雜巨系統方面進行了一些研究。據目前了解到的情況,國內尚有一些人在研究演化演算法,在人工智慧的一本書上有一段介紹人工生命。但對人工社會、人工生態環境及進化機器人等尚無人問津。
http://blog.ustc.e.cn/chujx/archives/000925.html