遺傳算法:組合優化算法,按照進化論的方式啟發搜索尋優解

2021-01-10 算法卡農

遺傳算法是由美國密西根大學的 Holland教授創立於20世紀六七十年代,受達爾文「進化論」思想的啟發而設計實現。遺傳算法不是通過暴力搜索解的方法,而是通過模擬種群的基因交叉和突變,經過種群一代一代的適者生存的方式尋找問題優解的方法,這在解決組合優化時解空間組合爆炸中應用廣泛。

人類的進化

一、如何理解遺傳算法

我們可以這樣形象地理解遺傳算法,假設我們現在需要找到一個最能抵抗寒冷的人類,那麼遺傳算法是這樣設計的:首次創造一個較寒冷生活環境(問題的限制條件),在這個環境中投入一批各種各樣的人類(初始種群),讓人類在這種寒冷的環境中生存。人類一代一代的生活,周圍環境也設置得越來越寒冷,同時人類在產生下一代的時候也伴隨著基因的交叉和變異(遺傳算法的迭代過程)。正是隨著基因交叉和突變,慢慢的產生了極少數可以抵抗寒冷的基因,慢慢的擁有可以抵抗寒冷基因的人更加適應環境而得以發展,慢慢的能夠適應寒冷的人類生存了下來,其它不適應環境的被淘汰了,這個過程就是解空間的慢慢趨於優的過程,遺傳算法就是模擬這一過程 。

遺傳算法很好理解,但是需要說明一下,遺傳算法是一種尋優的方案,一種算法思想,所以遺傳算法針對具體的問題需要具體的設計。

二、遺傳算法

遺傳算法按照其進化的思想,將算法的實施分為四個部分,編碼、選擇、交叉和變異。

2.1編碼

編碼問題是遺傳算法首先要解決的問題,這是一個從基因向表現型的表達過程,是模仿基因表達的過程。如雙眼皮\單眼皮由某一段基因控制,那麼就說這段基因表達到了眼皮這個表現型上。編碼就是建立基因與表現型的映射,編碼形式主要有三種:二進位編碼、整數編碼和浮點數編碼,三種編碼各有特點。

二進位編碼採用0/1數字串代表基因,如果011011中每兩個0/1數字串代表一個表現型,那麼表現型就是1,2,3,如果用來解決TSP問題的話,就代表選擇1->2->3這條路徑。

二進位編碼使用方便,能夠輕鬆處理基因交叉和變異過程,但是,二進位編碼容易造成編碼過剩和在交叉與變異過程中產生不穩定的新數據導致搜索結果難以收斂。

整數編碼的基因和表現型一致,在TSP問題中,基因串1,2,3的表現型就是1,2,3,就代表了1->2->3這條路徑。因此,整數編碼很方便處理TSP問題,但是,基因交叉的過程中會帶來路線中站點重複的問題。浮點數編碼適應於浮點數問題,涉及較少。

2.2選擇

選擇的作用是將適應環境能力強的個體挑選出來,對於算法來說就是將更加滿足優化條件的解挑選出來,並且在下一代中保留更多優解,這就是對搜索的啟發。適應環境能力就對應著優化條件,越優的條件越強的適應能力。對於TSP問題的優化條件就是希望路徑最短,即:

arg Min(distance(X)),對應arg Max(1/distance(X))

將適應函數取為:f(X)=1/distance(X),X代表一條路徑。對於適應度函數,當f(X)越大,適應度越大,distance(X)也越小,這是我們所期望的。

在選擇的過程中希望,適應環境能力強能夠更多的選擇,常常會採用輪盤賭的方式來按照體個的適應能力,按比例的選擇下一代的個體。輪盤賭的方式需要求出一下概率矩陣:

輪盤賭的實施過程為:當要進行選擇時,隨機的產生一個概率,假如概率為0.4,那麼這個處於個體1和個體2的累計概率之間,那麼個體2將被選中。按照輪盤賭的方式可以按照個體的適應度的比例挑選下一代。

輪盤賭

輪盤賭中,適應度高,對應的選擇的面積大,被選中的概率高。

2.3交叉和變異

交叉和變異是模擬生物基因行為的方法,是產生新物種的途徑,對應到算法中就是跳出局部最優向其它解空間搜索的方式。交叉是指兩條染色體的部分片段交叉互換,變異是指染色體中的基因發生了變化,改變了原來的結構。

如果採用二進位編碼的基因發生交叉的話,就是如下表中的兩端基因的加粗部分的基因串交換,同時,兩端基因的表現型也將發生變化。

如果採用整數編碼的基因發生交叉的話,還需要考慮是否需要通過映射去重。

同樣,如果採用二進位編碼的基因發生變異的話,基因串中的某一個0變成1,或者1變成0,其表現型也將發生變化。

三、解決什麼問題

在實際的生活中常常會遇到NP難問題,尤其是組合優化問題,隨著組合的增加解的空間也指數的增加。因為無法在可接受的時間內搜索得到問題最優解,這時就需要採用啟發式搜索優解的方法,在可接受的時間範圍內得到較優解甚至最優解。遺傳算法可以派上用場了,可以解決組合優化問題,如:排課問題、生產計劃規劃、旅行商問題等。

本文的版權歸算法卡農所有,抄襲等侵權行為必究!

喜歡我的話,加個關注吧,有更加精彩的內容等著大家。

相關焦點

  • 人工智慧之遺傳算法(GA),搜索最優解的方法
    GA),就會聯想到達爾文的生物進化論。遺傳算法(GA)是一類借鑑生物界的進化規律演化而來的隨機化搜索方法。 今天我們重點探討一下遺傳算法(GA)。^_^ 人們一提到遺傳算法(GA),就會聯想到達爾文的生物進化論。遺傳算法(GA)是一類借鑑生物界的進化規律演化而來的隨機化搜索方法。它是由美國的J.Holland教授1975年首先提出。目前,遺傳算法(GA)已成為進化計算研究的一個重要分支。
  • 淺析基於優化算法的能量管理控制策略(二)
    算法博弈論(Game Theory,GT)凸規劃(Convex Programming,CP)模擬退火是一種受金屬退火過程啟發的方法,該方法通過隨機搜索,顯示目標函數優化的可能最優解的同時保留了符合標準定義的次優解,這樣可以防止算法陷入局部極小值,並增強其向全局最優的演化。
  • 前沿| 利用遺傳算法優化神經網絡:Uber提出深度學習訓練新方式
    許多人認為,SGD 算法有效計算梯度的能力對於這種訓練能力而言至關重要。但是,Uber 近日發布的五篇論文表明,神經進化(neuroevolution)這種利用遺傳算法的神經網絡優化策略,也是訓練深度神經網絡解決強化學習(RL)問題的有效方法。
  • 遺傳算法原理以及在量化投資的應用
    每個步驟的優化都會影響到遺傳算法整體的優化結果。 遺傳算法做因子挖掘 在量化投資領域,多因子模型是量化投資的重要並且傳統一個模型,因子是模型的原料,量化模型就是把不同類的因子按照一定方式組合在一起,去選股,並且預測收益。因子也可以稱之為特徵。
  • 利用遺傳算法優化GANs
    遺傳算法是根據大自然中生物體進化規律而設計提出的,是根據大自然中生物體進化規律而設計提出的。是模擬達爾文生物進化論的自然選擇和遺傳學機理的生物進化過程的計算模型,是一種通過模擬自然進化過程搜索最優解的方法。在本片文章中,我們嘗試使用遺傳算法來對訓練GANs進行優化,我們的訓練模型是生成手寫數字。什麼是遺傳算法?
  • 基於遺傳算法的高頻標籤天線的優化設計
    本文使用遺傳算法對片上天線的幾何參數和工藝參數優化。可以根據實際情況和用戶的要求設定約束條件,如版圖面積,最小開路電壓,最小輸進功率等。通過設定約束條件,可 以設定參數的調節範圍和天線的性能要求,便可以在更大範圍內自主地選擇合適的參數以提 高能量傳遞效率。
  • 詳解遺傳算法
    遺傳算法是受達爾文的進化論的啟發,借鑑生物進化過程而提出的一種啟發式搜索算法。因此在介紹遺傳算法前有必要簡單的介紹生物進化知識。進化論知識   作為遺傳算法生物背景的介紹,下面內容了解即可:  1、種群(Population):生物的進化以群體的形式進行,這樣的一個群體稱為種群。  2、個體:組成種群的單個生物。
  • 什麼是遺傳算法?怎樣繪製遺傳算法流程圖
    遺傳算法是一種通過模擬自然進化過程搜索最優解的操作方法,遺傳算法有三個基本算子選擇、交叉和變異。對於遺傳算法我們也可以使用流程圖對其整個過程進行總結歸納,那要怎樣繪製遺傳算法流程圖呢?下面是分享的簡單操作方法,希望可以幫助大家。
  • 遺傳算法的發展
    (1) 萌芽期 (50年代後期至70年代初期) • 50年代後期,一些生物學家著手採用電子計算機模擬生物的遺傳系統,儘管這些工作純粹是研究生物現象,但其中已使用現代遺傳算法的一些標識方式。 • 1975年,De.Jong在其博士論文中結合模式定理進行了大量的純數值函數優化計 算實驗,樹立了遺傳算法的工作框架,得到了一些重要且具有指導意義的結論。
  • 基於遺傳算法的工廠AGV路徑優化研究
    遺傳算法是模仿自然界生物進化機制發展起來的隨機全局搜索優化方法,具有算法效率高、魯棒性強、可實現並行搜索等特點 [3] ,被廣泛用於解決路徑規劃等領域的問題。本文將研究如何運用遺傳算法高效直接的產生AGV運輸多種物料時的不同路徑優化結果。
  • 矩形平面陣列天線旁瓣電平優化的遺傳算法
    優化,通過提出新的自適應變異算子改進了算法的收斂性能,良好的計算結果表明遺傳算法是目前求解此類問題的有效方法.;近年來一種模擬自然進化的遺傳算法開始應用於計算電磁學領域[1,2],該算法只要求待解問題是可計算的,並無可微性等其它限制,同時,由於該算法採用了優化的隨機搜索技術,能以較大的概率和較快的速率求得全局最優解.本文運用遺傳算法對一個具有1024個陣元的矩形平面陣列的陣元間距及饋電流幅值進行了優化,使該方陣的最大相對旁瓣電平由均勻方陣的-13.27dB降至-34.56dB
  • 用遺傳算法優化垃圾收集策略
    遺傳算法是一個優化技術,在本質上類似於進化過程。這可能是一個粗略的類比,但如果你眯著眼睛看,達爾文的自然選擇確實大致上類似於一個優化任務,其目的是製造出完全適合在其環境中繁衍生息的有機體。在本文中,我將展示如何在Python中實現一個遺傳算法,在幾個小時內「進化」一個收集垃圾的機器人。
  • 改進遺傳算法的支持向量機特徵選擇解決方案
    遺傳算法作為一種魯棒性極強的智能識別方法,直接對尋優對象進行操作,不存在特定數學條件的限定,具有極好的全局尋優能力和並行性;而由於遺傳算法採用概率化的尋優方法,所以在自動搜索的過程中可以自主獲取與尋優有關的線索,並在加以學習之後可以自適應地調整搜索方向,不需要確定搜索的規則。因此遺傳算法被廣泛應用在知識發現、組合優化、機器學習、信號處理、自適應控制和人工生命等領域。
  • 配電網絡重構的改進混合遺傳算法
    一個大型的配網包含眾多的節點和支路,因此圖中支撐樹的組合數目極大,若窮舉所有的樹,算法將非常的低效。  遺傳算法具有全局收斂性、無可微性要求、具有很好的魯棒性等優點,特別適合於求解組合優化問題。另外,與一般的隨機搜索方法進行的盲目無向搜索不同,遺傳算法進行的是高效有向的全局搜索,能夠逐步地逼近並收斂於全局最優解。因此,遺傳算法在配網重構中得到越來越廣泛的應用。
  • 改進遺傳算法的支持向量機特徵選擇解決方案介紹
    遺傳算法作為一種魯棒性極強的智能識別方法,直接對尋優對象進行操作,不存在特定數學條件的限定,具有極好的全局尋優能力和並行性;而由於遺傳算法採用概率化的尋優方法,所以在自動搜索的過程中可以自主獲取與尋優有關的線索,並在加以學習之後可以自適應地調整搜索方向,不需要確定搜索的規則。
  • A* 路徑搜索算法
    假設地圖中存在起點和終點,路徑搜索算法可以用於搜索起點到終點的路徑。在機器人路徑規劃,或者遊戲中都需要用到路徑搜索算法。本文介紹一種經典的 A* 算法,和 Dijkstra 算法相比,A* 採用啟發式的搜索策略,能夠更快地搜索出最短路徑。
  • 遺傳算法全接觸(一)
    下面介紹介紹「袋鼠跳」的幾種方式。爬山法、模擬退火和遺傳算法解決尋找最大值問題的幾種常見的算法: 1. 爬山法(最速上升爬山法): 從搜索空間中隨機產生鄰近的點,從中選擇對應解最優的個體,替換原來的個體,不斷 重複上述過程。
  • 遺傳算法:讓發明自動「進化」
    之所以這麼說,是因為現在的電腦軟體可以自動地使技術向前「進化」,而且能夠在無人操控的情況下獨立設計出新的方案。這項技術已經在很多領域得到廣泛運用,比如,機器人運動領域、計算機安全領域以及製藥領域。 這項技術的核心是一種基於遺傳學的運算法則,簡稱遺傳算法。它模仿了自然選擇的原理,任何一個設計方案都可以看做是一個由無數片段構成的遺傳基因。
  • 變壓器之遺傳算法(Genetic Algorithm)的具體實現過程
    遺傳算法(Genetic Algorithm)是一類借鑑生物界的進化規律(適者生存,優勝劣汰遺傳機制)演化而來的隨機化搜索方法。
  • 一種改進操作算子的加速收斂遺傳算法
    關鍵詞:遺傳算法;變異;收斂速度;種群數本文引用地址:http://www.eepw.com.cn/article/192077.htm0 引 言 遺傳算法(Genetic Algorithm,GA)是一種宏觀意義下的仿生算法,它模仿的機制是一切生命與智能的產生與進化過程,從一個初始種群出發,不斷重複執行選擇,雜交和變異的過程,使種群進化越來越接近某一目標。