遺傳演算法(ge***ic algorithm)是一類借鑑生物界的進化規律(適者生存,優勝劣汰遺傳機制)演化而來的隨機化搜尋方法。它是由美國的j.holland教授2023年首先提出,其主要特點是直接對結構物件進行操作,不存在求導和函式連續性的限定;具有內在的隱並行性和更好的全域性尋優能力;採用概率化的尋優方法,能自動獲取和指導優化的搜尋空間,自適應地調整搜尋方向,不需要確定的規則。遺傳演算法的這些性質,已被人們廣泛地應用於組合優化、機器學習、訊號處理、自適應控制和人工生命等領域。它是現代有關智慧型計算中的關鍵技術之一。
1.遺傳演算法與自然選擇
達爾文的自然選擇學說是一種被人們廣泛接受的生物進化學說。這種學說認為,生物要生存下去,就必須進行生存鬥爭。生存鬥爭包括種內鬥爭、種間鬥爭以及生物跟無機環境之間的鬥爭三個方面。在生存鬥爭中,具有有利變異的個體容易存活下來,並且有更多的機會將有利變異傳給後代;具有不利變異的個體就容易被淘汰,產生後代的機會也少的多。因此,凡是在生存鬥爭中獲勝的個體都是對環境適應性比較強的。達爾文把這種在生存鬥爭中適者生存,不適者淘汰的過程叫做自然選擇。它表明,遺傳和變異是決定生物進化的內在因素。自然界中的多種生物之所以能夠適應環境而得以生存進化,是和遺傳和變異生命現象分不開的。正是生物的這種遺傳特性,使生物界的物種能夠保持相對的穩定;而生物的變異特性,使生物個體產生新的性狀,以致於形成新的物種,推動了生物的進化和發展。
遺傳演算法是模擬達爾文的遺傳選擇和自然淘汰的生物進化過程的計算模型。它的思想源於生物遺傳學和適者生存的自然規律,是具有「生存+檢測」的迭代過程的搜尋演算法。遺傳演算法以一種群體中的所有個體為物件,並利用隨機化技術指導對乙個被編碼的引數空間進行高效搜尋。其中,選擇、交叉和變異構成了遺傳演算法的遺傳操作;引數編碼、初始群體的設定、適應度函式的設計、遺傳操作設計、控制引數設定五個要素組成了遺傳演算法的核心內容。 作為一種新的全域性優化搜尋演算法,遺傳演算法以其簡單通用、魯棒性強、適於並行處理以及高效、實用等顯著特點,在各個領域得到了廣泛應用,取得了良好效果,並逐漸成為重要的智慧型演算法之一。
2.遺傳演算法的基本步驟
我們習慣上把holland2023年提出的ga稱為傳統的ga。它的主要步驟如下:
編碼:ga在進行搜尋之前先將解空間的解資料表示成遺傳空間的基因型串結構資料,這些串結構資料的不同組合便構成了不同的點。
初始群體的生成:隨機產生n個初始串結構資料,每個串結構資料稱為乙個個體, n個個體構成了乙個群體。ga以這n個串結構資料作為初始點開始迭代。
適應性值評估檢測:適應性函式表明個體或解的優劣性。不同的問題,適應性函式的定義方式也不同。
選擇:選擇的目的是為了從當前群體中選出優良的個體,使它們有機會作為父代為下一代繁殖子孫。遺傳演算法通過選擇過程體現這一思想,進行選擇的原則是適應性強的個體為下一代貢獻乙個或多個後代的概率大。選擇實現了達爾文的適者生存原則。
交換:交換操作是遺傳演算法中最主要的遺傳操作。通過交換操作可以得到新一代個體,新個體組合了其父輩個體的特性。交換體現了資訊交換的思想。
變異:變異首先在群體中隨機選擇乙個個體,對於選中的個體以一定的概率隨機地改變串結構資料中某個串的值。同生物界一樣,ga中變異發生的概率很低,通常取值在0.001~0.01之間。變異為新個體的產生提供了機會。
ga的計算過程為:
選擇編碼方式
產生初始群體
計算初始群體的適應性值
如果不滿足條件
3.遺傳演算法的特點
遺傳演算法作為一種快捷、簡便、容錯性強的演算法,在各類結構物件的優化過程中顯示
出明顯的優勢。與傳統的搜尋方法相比,遺傳演算法具有如下特點:
搜尋過程不直接作用在變數上,而是在引數集進行了編碼的個體。此編碼操作,
使得遺傳演算法可直接對結構物件(集合、序列、矩陣、樹、圖、鏈和表)進行操作。
搜尋過程是從一組解迭代到另一組解,採用同時處理群體中多個個體的方法,降
低了陷入區域性最優解的可能性,並易於並行化。
4.遺傳演算法的研究歷史與現狀
遺傳演算法研究的興起是在80年代末和90年代初期,但它的歷史起源可追溯至60年代
初期。早期的研究大多以對自然系統的計算機模擬為主。如fraser的模擬研究,他提出了和現在的遺傳演算法十分相似的概念和思想。holland和dejong的創造性研究成果改變了早期遺傳演算法研究的無目標性和理論指導的缺乏。其中,holland於2023年出版的著名著作《自然系統和人工系統的適配》系統地闡述了遺傳演算法的基本理論和方法,並提出了對遺傳演算法的理論研究和發展極為重要的模式理論。這一理論首次確認了結構重組遺傳操作對於獲得隱並行性的重要性。
同年,dejong的重要**《遺傳自適應系統到的行為分析》將holland的模式理論與他的計算實驗結合起來,並提出了諸如代溝等新的遺傳操作技術。可以認為,dejong所作的研究工作是遺傳演算法發展過程中的乙個里程碑。
進入80年代,遺傳演算法迎來了興盛發展時期,無論是理論研究還是應用研究都成了十分熱門的課題。尤其是遺傳演算法的應用領域也不斷擴大。目前遺傳演算法所涉及的主要領域有自動控制、規劃設計、組合優化、圖象處理、訊號處理、人工生命等。可見,遺傳演算法的應用研究已從初期的組合優化求解拓展到了許多更新。更工程化的應用方面。
ALGO 遺傳演算法 1
遺傳演算法應用步驟 ga是一種仿生全域性優化演算法,通過選擇 selection 交叉 crossover 與變異 mutation 等機制,使得種群中個體的適應性 fitness 不斷提高.核心思想 物競天擇,適者生存 適應度函式 fitness function 稱s l s l s l為個體空...
python遺傳演算法 Python 遺傳演算法實現
關於遺傳演算法 遺傳演算法是仿照自然界中生物進化而產生的一類優化演算法。個人感覺遺傳演算法簡單粗暴,適應性廣。關於遺傳演算法的介紹網上有很多了,這裡按照我自己的理解簡單概括一下。編碼解碼,將待優化的引數編碼為dna序列,最簡單直接的為二進位制編碼 即有兩種鹼基的dna鏈 生成隨機初代 選擇,適應度 ...
遺傳演算法 python 簡書 遺傳演算法
優化的演算法有很多種,從最基本的梯度下降法到現在的一些啟發式演算法,如遺傳演算法 ga 差分演化演算法 de 粒子群演算法 pso 和人工蜂群演算法 abc 舉乙個例子,遺傳演算法和梯度下降 梯度下降和遺傳演算法都是優化演算法,而梯度下降只是其中最基礎的那乙個,它依靠梯度與方向導數的關係計算出最優值...