1. 程式人生 > >遺傳演算法及其應用簡介

遺傳演算法及其應用簡介

遺傳演算法(genetic algorithm,GA)是計算數學中用於解決最優化問題的搜尋演算法,是進化演算法的一種。進化演算法最初是借鑑了達爾文進化生物學中的一些現象而發展起來的,這些現象包括遺傳、突變、自然選擇以及雜交等。

預備知識:達爾文進化論,遺傳學三大基本定律

達爾文
查爾斯·達爾文 (1809 - 1882)

孟德爾
格雷戈爾·孟德爾(1822 - 1884)

摩爾根
托馬斯·亨特·摩爾根 (1866 - 1945)

遺傳演算法通常實現方式為一種計算機模擬。對於一個最優化問題,一定數量的候選解(稱為個體)可抽象表示為染色體,使種群向更好的解進化。傳統上,解用二進位制表示(即0和1的串),但也可以用其他表示方法。進化從完全隨機個體的種群開始,之後一代一代發生。在每一代中評價整個種群的適應度

,從當前種群中隨機地選擇多個個體(基於它們的適應度),通過自然選擇突變產生新的生命種群,該種群在演算法的下一次迭代中成為當前種群。

基本的遺傳演算法以初始種群為起點,經過自然選擇交叉突變操作生成新的種群,經過反覆更新種群直到尋找到最優解。其計算步驟如下:

  1. 編碼:將問題空間轉換為遺傳空間;
  2. 生成初始種群:隨機生成P個染色體;
  3. 種群適應度計算:按照確定的適應度函式,計算各個染色體的適應度;
  4. 選擇:根據染色體適應度,按照選擇運算元進行染色體的選擇;
  5. 交叉:按照交叉概率對被選擇的染色體進行交叉操作,形成下一代種群;
  6. 突變:按照突變概率對下一代種群中的個體進行突變操作;
  7. 返回第3步繼續迭代,直到滿足終止條件。

例題1:試計算此二元函式的最大值:

f(x1,x2)=x21+x22
x1{1,2,3,4,5,6,7}
x2{1,2,3,4,5,6,7}
  1. 編碼:因 x1,x2 為 0 ~ 7之間的整數,所以分別用3位無符號二進位制整數來表示,將它們連線在一起所組成的6位無符號二進位制數就形成了個體的基因型,表示一個可行解。例如:基因型 X=101110 所對應的表現型是:
    [x1,x2][5,6]
  2. 生成初始種群:本例中,群體規模的大小取為4,即群體由4個個體組成,每個個體可通過隨機的方法產生。例如:
    a1=101000=[5,0]a2=101100=[5,4]a3=001100=[1,4]a4=101111
    =[5,7]
  3. 種群適應度計算:本例中,目標函式總取非負值,並且是以求函式最大值為優化目標,故可直接利用目標函式值作為個體的適應度:
    f(a1)=25f(a2)=41f(a3)=17f(a4)=74
  4. 選擇:我們採用與適應度成正比的概率來確定各個個體複製到下一代群體中的數量。其具體操作過程如下:
    • 先計算出群體中所有個體的適應度的總和 Σf(ai)i=1,2,3,4;
    • 其次計算出每個個體的相對適應度的大小 p(ai)=f(ai)/Σf(ai)i=1,2,3,4。它即為每個個體被遺傳到下一代群體中的概率;
    • 每個概率值組成一個區間,全部概率值之和為1;
    • 最後再產生一個0到1之間的隨機數,依據該隨機數出現在上述哪一個概率區域內來確定各個個體被選中的次數。
      在本例中,
      Σf(ai)=157
      p(a1)=15.92%p(a2)=26.11%p(a3)=10.82%p(a4)=47.13%
      因此a1=[0,0.1592]a2=[0.1592,0.4203]a3=[0.4203,0.5285]a4=[0.5285,1]
      經過4次選擇,a4被選3次,a2被選1次,a1a3落選:
      b1=101111=[5,7]b2=101111=[5,7]b3=101100=[5,4]b4=101111=[5,7]
  5. 交叉:本例採用單點交叉的方法,其具體操作過程是:
    • 先對群體進行隨機配對;
    • 其次隨機設定交叉點位置;
    • 最後再相互交換配對染色體之間的部分基因。
      在本例中,

      相關推薦

      遺傳演算法及其應用簡介

      遺傳演算法(genetic algorithm,GA)是計算數學中用於解決最優化問題的搜尋演算法,是進化演算法的一種。進化演算法最初是借鑑了達爾文進化生物學中的一些現象而發展起來的,這些現象包括遺傳、突變、自然選擇以及雜交等。 預備知識:達爾文進化論,遺傳學三

      圖論初步-Tarjan演算法及其應用

      暑假刷了一堆Tarjan題到頭來還是忘得差不多。 這篇部落格權當複習吧。 一些定義 無向圖 割頂與橋 (劃重點) 圖G是連通圖,刪除一個點表示刪除此點以及所有與其相連的邊。 若刪除某點u後G不再連通,那麼u是G的一個割頂(割點)。 若刪除某邊e後G不再連通,那麼e是G的一個橋。 雙連通 一個圖為雙

      面試:解決重點問題,計算兩個時間段是否有交集的演算法及其應用例項

      1、通過 if 判斷語句進行判斷,if(endTime1 > startTime2 && endTime2 > startTime1) 那麼這兩個時間段有交集,一個時間段的結束時間大於另一個時間段的開始時間,如果成立那麼兩個時間段有交集。

      解讀 2016 年十大機器學習演算法及其應用

      毫無疑問,過去兩年中,機器學習和人工智慧的普及度得到了大幅提升。   如果你想學習機器演算法,要從何下手呢?以我為例,我是在哥本哈根留學期間,學習AI課程入門的。我們用的教科書是一本AI經典:《Peter Norvig’s Artificial Intelligence —

      KNN演算法及其應用

      一、KNN演算法介紹 1. 綜述 1.1 Cover和Hart在1968年提出了最初的鄰近演算法 1.2 分類(classification)演算法 1.3 輸入基於例項的學習(instance-based learnin

      基於MATLAB的dijkstra演算法及其應用

      clc; clear; close all; %% 載入設定資料 points = load('c:\\niu\\點的資料.txt'); lines = load('c:\\niu\\邊資料.txt'); A = ones(size(points, 1))*Inf; for i = 1 : size(A, 1

      決策樹演算法及其應用案例

      決策樹演算法主要分為三類: ID3、C4.5、CART演算法 以ID3演算法為例: 對上表某圖書銷量進行預測. 思考:建立測試模型,各個變數資料權重?資料的轉化? 重點在於:計算各個資訊熵(資料預處理),可參考百度百科內容 決策樹演算法模組: 關注點:對資料需要進行預處理,

      [PlantSimulation]GAWizard遺傳演算法應用(二)

      在閾值設定問題中,需要給目標值設定合適的變化範圍,換句話說,就是找到一個最大值和最小值,使其在其區間內變化,從而是系統穩定、高效執行。在PlantSimulation中常見的就是優化暫存區的容量。此次案

      manacher演算法及其應用

      最近學習了牛客網的演算法初級班,學到了一些經典演算法 這裡整理一下manacher演算法,自己參考老師給的程式碼,轉成C++程式碼 #ifndef MANACHER_H #define MANACHER_H //Manacher演算法 :找出字串str中最長的迴文子串 #d

      Bitmap演算法及其應用——求素數

              在學習hashtable的時候,發現用於標記懶惰刪除的資料結果是Bitmap,詳見資料結果習題解析(c++語言)(第三版) 鄧俊輝編著。理論上來說,可以用一個數組或者是std::vector來進行標記,但是Bitmap則具有更高的空間效率和時間效率。下面主要參

      EM演算法及其應用

      EM演算法簡介 首先上一段EM演算法的wiki定義: expectation–maximization (EM) algorithm is an iterative method to find maximum likelihood(MLE)

      Flajolet-Martin演算法及其應用

      來源:http://www.pluscn.net/?p=1192 對應的程式碼(maybe):https://github.com/graphlab-code/graphlab/blob/master/toolkits/graph_analytics/approxima

      遺傳演算法框架Geatpy學習之——基於網格化處理的多種群進化優化及其在含等式約束的優化問題中的應用

      Geatpy是由華南理工大學、華南農業大學、德州奧斯汀公立大學學生聯合團隊開發的一款Python上的遺傳和進化演算法高效能權威框架。其效能遠高於matlab遺傳演算法工具箱及類似的諸如gatbx、GEATbx、gaot等第三方工具箱。尤其適合需要應用遺傳或其他進化演算法求解建

      遺傳演算法原理簡介及其MATLAB實踐

      目錄 遺傳演算法簡介 遺傳演算法(Genetic Algorithm,GA)是一種進化演算法,其基本原理是仿效生物界中的“物競天擇、適者生存”的演化法則,它最初由美國Michigan大學的J. Holland教授於1967年提出。 遺傳演算法

      ASP.NET MVC應用遷移到ASP.NET Core及其異同簡介

      連接 項目引用 asi ane 隨著 efm 什麽 數據庫的配置 自動   ASP.NET Core是微軟新推出支持跨平臺、高性能、開源的開發框架,相比起原有的ASP.NET來說,ASP.NET Core更適合開發現代應用程序,如跨平臺、Dorker的支持、集成現代前端開發

      菜鷄日記——KMP演算法及其優化與應用

      一、什麼是KMP演算法 KMP演算法,全稱Knuth-Morris-Pratt演算法,由三位科學家的名字組合命名,是一種效能高效的字串匹配演算法。假設有主串S與模式串T,KMP演算法可以線上性的時間內匹配出S中的T,甚至還能處理由多個模式串組成的字典的匹配問題。 二、KMP演算法原理及實現

      《資料結構與演算法設計》實驗報告書之二叉樹的基本操作實現及其應用

      《資料結構與演算法設計》實驗報告書之二叉樹的基本操作實現及其應用 實驗專案 二叉樹的基本操作實現及其應用 實驗目的 1.熟悉二叉樹結點的結構和對二叉樹的基本操作。 2.掌握對二叉樹每一種操作的具體實現。 3.學會利用遞迴方法編寫對二叉樹這種遞迴資料結構進行處理的演算法。 4.會用二叉

      經典的同態濾波演算法的優化及其應用引數配置。

      % 同態濾波器 % ImageIn - 需要進行濾波的灰度影象 % High - 高頻增益,需要大於1 % Low - 低頻增益,取值在0和1之間 % C - 銳化係數 % Sigma - 截止頻率,越大影象越亮 % 輸出為進行

      馬爾可夫毯式遺傳演算法在基因選擇中的應用

      #引用 ##LaTex @article{ZHU20073236, title = “Markov blanket-embedded genetic algorithm for gene selection”, journal = “Pattern Recogn

      資料結構與演算法13-哈夫曼樹及其應用

      赫夫曼樹及其應用 最基本的壓縮編碼方法----赫夫曼編碼 定義與原理 我們先把這兩棵二叉樹簡化成葉子結點帶權的二叉樹(注:樹結點間的邊相差的數叫做權Weight) 從樹中一個結點到另一個結點之間的分支構成兩個結點之間的路徑,路徑上的分支數目稱做路徑長度。 如:二叉樹a中,根結點到