一、遺傳演算法簡介:
遺傳演算法是模擬生物在自然環境下的遺傳和進化過程的一種自適應的全域性優化搜尋演算法,通過借助遺傳學的原理,經過自然選擇、遺傳、變異等作用機制進而篩選出具有適應性更高的個體(適者生存)。遺傳演算法從20世紀七八十年代的誕生到現在主要集中的適用範圍為:np問題(指存在多項式演算法能夠解決的非決定性問題)、非線性、多峰函式優化和多目標優化問題等等。同時在機器學習、模式識別和神經網路及社會科學中的應用也顯得非常出色。
二、遺傳演算法的實現與目的:
實現 :在計算機上模擬生物的進化過程和基因的操作(選擇、交叉、變異)。
目的 :抽象和嚴謹地解釋自然界的適應過程和將自然生物系統的重要機理運用到人工系統的設計中。
三、遺傳演算法基本術語:
種群:可行解集,遺傳演算法的求解過程就是從這個子集開始的。
個體:可行解
染色體:可行解的編碼
基因:可行解編碼的分量
基因形式:遺傳編碼
適應度函式:其函式值是遺傳演算法實現優勝劣汰的主要依據。
選擇:選擇操作
交叉:編碼的交叉操作
變異:可行解編碼的變異
注:這裡的個體與染色體的關係,可以把個體當做是染色體的組合。換句話說就是染色體決定了個體,染色體上基因的操作(選擇、交叉、變異)直接作用於個體的形態。染色體是指對個體進行編碼後所得到的編碼串。染色體中的每1 位稱為基因,染色體上由若干個基因構成的乙個有效資訊段稱為基因組。
四、遺傳操作:
遺傳操作:就包括優選適應性強的個體的「選擇」;個體間交換基因產生新個體的「交叉」;個體間的基因突變而產生新個體的「變異」。其中遺傳演算法是運用遺傳運算元來進行遺傳操作的。即:選擇運算元、變異運算元、交叉運算元。
2.交叉運算元:將群體p(n)中選中的各個個體隨機搭配,對於每乙個個體,以某一特定概率(交叉概率pc(0.25-1.0取值))交換他們之間的部分染色體(編碼位串的部分位置)。交叉演算法是的,遺傳演算法的搜尋能力得到更好的延伸。
2.1交叉操作的具體步驟可以表述為:1.在交配池中隨機取出要交配的一對個體;2,根據編碼位串長度l,對要交配的一對個體,隨機選取[1,l-1]中的乙個或者多個整數k作為交叉位置處,相互交換各自的部分基因,由此形成新的個體。
3.變異操作:對群體的每個個體,以某乙個概率(變異概率pm(0.01-0.1取值))將某乙個或者某些基因座上的基因值改變為其他的等位基因值,根據個體的編碼方式不同,可以將變異分為實值變異和二進位制變異。
3.1變異的操作步驟為:首先,對種群中的所有個體按事先的設定的變異概率判斷是否進行變異操作;然後 對判斷需要變異的個體進行隨機選擇變異位進行變異。
遺傳演算法的簡單步驟可為:
1.評估每條染色體所對應個體的適應度。
2.遵照適應度越高,選擇概率越大的原則,從種群中選擇兩個個體作為父方和母方。
3.抽取父母雙方的染色體,進行交叉,產生子代。
4.對子代的染色體進行變異。
5.重複2,3,4步驟,直到新種群的產生。
五、遺傳演算法特點:
1、遺傳演算法以決策變數的編碼作為運算物件,這種對決策變數的編碼處理,使得在優化計算中可以借鑑生物學的染色體和基因概念,模擬自然界的生物遺傳和進化機制,方便的應用決策變數的編碼成的位串進行遺傳運算元。
2、遺傳演算法僅僅使用目標函式值變換來的適應度函式值,就可以確定進一步的搜尋方向和範圍。而不是使用目標函式的求導來進行。
3、遺傳操作是基於概率因子來操作的。
4、遺傳演算法具有自組織、自適應個自學習的特性。
5、多點搜尋能力,即遺傳演算法是同時對多個解進行處理、評估,並行地爬多個峰。這一特點使遺傳演算法具有較好的全域性搜尋能力,減少了陷於區域性優解的風險。
六、matlab例項:
2維空間搜尋,群體規模為80:
3維空間搜尋,群體規模為80:
5維空間搜尋,群體規模為80:
8維空間搜尋,群體規模為80:
2維空間搜尋,群體規模為100:
2維空間搜尋,群體規模為200:
5維空間搜尋,群體規模為100:
5維空間搜尋,群體規模為200:
分析 及結論:個體的適應度值越大,被選中的可能性也越大。群體規模數越大,可行解的集合也就越大。
遺傳演算法 簡單函式優化
f x 11sin 6x 7cons 5x 0 x 2 pi 注意程式中num2gray函式和gray2num函式可以參照我上面的另外兩個博文中有 初始化引數 l 16 編碼為16位二進位制數 n 32 初始種群規模 m 48 m個中間體,運用運算元選擇出m 2對母體,進行交叉 對m個中間體進行變異...
遺傳演算法解決函式優化問題
一 實驗目的 1.掌握遺傳演算法的基本原理和步驟。2.複習vb vc的基本概念 基本語法和程式設計方法,並熟練使用vb或vc編寫遺傳演算法程式。二 實驗內容 1.上機編寫程式,解決以下函式優化問題 2.除錯程式。3.根據實驗結果,撰寫實驗報告。三 實驗原理 遺傳演算法是一類隨機優化演算法,但它不是簡...
遺傳演算法優化例子
遺傳演算法的手工模擬計算示例 為更好地理解遺傳演算法的運算過程,下面用手工計算來簡單地模擬遺傳演算法的各個主要執行步驟。例 求下述二元函式的最大值 1 個體編碼 遺傳演算法的運算物件是表示個體的符號串,所以必須把變數 x1,x2 編碼為一種 符號串。本題中,用無符號二進位制整數來表示。因 x1,x2...