導航:首頁 > 源碼編譯 > 遺傳演算法原理提出的時間

遺傳演算法原理提出的時間

發布時間:2022-12-16 01:16:51

Ⅰ 什麼是遺傳演算法

遺傳演算法(Genetic Algorithm)是模擬達爾文生物進化論的自然選擇和遺傳學機理的生物進化過程的計算模型,是一種通過模擬自然進化過程搜索最優解的方法,它最初由美國Michigan大學J.Holland教授於1975年首先提出來的,並出版了頗有影響的專著《Adaptation in Natural and Artificial Systems》,GA這個名稱才逐漸為人所知,J.Holland教授所提出的GA通常為簡單遺傳演算法(SGA)。

說簡單了,就是利用達爾文生物進化的原理,利用計算機編程,對問題進行優化求解的一種方法。生物體內遺傳因子通過選擇、交叉、變異之後,在經過多代的適者生存,是的最適應環境的遺傳因子得以遺傳到後代,而遺傳演算法通過一定的演算法編寫代碼產生初始種群,之後利用遺傳因子的原理使得初始種群中的代碼逐漸接近所求問題得最優解,再根據編碼原理解碼,使代碼還原為非計算機語言表示的真實問題。

Ⅱ 遺傳演算法

遺傳演算法是從代表問題可能潛在解集的一個種群開始的,而一個種群則由經過基因編碼的一定數目的個體組成。每個個體實際上是染色體帶有特徵的實體。染色體作為遺傳物質的主要載體,即多個基因的集合,其內部表現(即基因型)是某種基因的組合,它決定了個體形狀的外部表現,如黑頭發的特徵是由染色體中控制這一特徵的某種基因組合決定的。因此,在一開始需要實現從表現型到基因型的映射即編碼工作。由於仿照基因編碼的工作很復雜,我們往往進行簡化,如二進制編碼。初始種群產生之後,按照適者生存和優勝劣汰的原理,逐代(generation)演化產生出越來越好的近似解。在每一代,根據問題域中個體的適應度(fitness)大小挑選(selection)個體,並藉助於自然遺傳學的遺傳運算元(genetic operators)進行組合交叉(crossover)和變異(mutation),產生出代表新的解集的種群。這個過程將導致種群自然進化一樣的後生代種群比前代更加適應環境,末代種群中的最優個體經過編碼(decoding),可以作為問題近似最優解。

5.4.1 非線性優化與模型編碼

假定有一組未知參量

xi(i=1,2,…,M)

構成模型向量m,它的非線性目標函數為Φ(m)。根據先驗知識,對每個未知量都有上下界αi及bi,即αi≤x≤bi,同時可用間隔di把它離散化,使

di=(bii)/N (5.4.1)

於是,所有允許的模型m將被限制在集

xii+jdi(j=0,1,…,N) (5.4.2)

之內。

通常目標泛函(如經濟學中的成本函數)表示觀測函數與某種期望模型的失擬,因此非線性優化問題即為在上述限制的模型中求使Φ(m)極小的模型。對少數要求擬合最佳的問題,求目標函數的極大與失擬函數求極小是一致的。對於地球物理問題,通常要進行殺重離散化。首先,地球模型一般用連續函數表示,反演時要離散化為參數集才能用於計算。有時,也將未知函數展開成已知基函數的集,用其系數作為離散化的參數集xi,第二次離散化的需要是因為每一個未知參數在其變化范圍內再次被離散化,以使離散模型空間最終包含著有限個非線性優化可選擇的模型,其個數為

地球物理數據處理教程

其中M為未知參數xi的個數。由此式可見,K決定於每個參數離散化的間隔di及其變化范圍(αi,bi),在大多數情況下它們只能靠先驗知識來選擇。

一般而言,優化問題非線性化的程度越高,逐次線性化的方法越不穩定,而對蒙特卡洛法卻沒有影響,因為此法從有限模型空間中隨機地挑選新模型並計算其目標函數 Φ(m)。遺傳演算法與此不同的是同時計算一組模型(開始時是隨機地選擇的),然後把它進行二進制編碼,並通過繁殖、雜交和變異產生一組新模型進一步有限的模型空間搜索。編碼的方法可有多種,下面舉最簡單的例說明之,對於有符號的地球物理參數反演時的編碼方式一般要更復雜些。

假設地球為有三個水平層的層次模型,含層底界面深度hj(j=1,2,3)及層速度vj(j=1,2,3)這兩組參數。如某個模型的參數值為(十進制):

h1=6,h2=18,h3=28,單位為10m

v1=6,v2=18,v3=28,單位為 hm/s

按正常的二進制編碼法它們可分別用以下字元串表示為:

地球物理數據處理教程

為了減少位元組,這種編碼方式改變了慣用的單位制,只是按精度要求(深度為10m,波速為hm/s)來規定參數的碼值,同時也意味著模型空間離散化間距di都規格化為一個單位(即10m,或hm/s)。當然,在此編碼的基礎上,還可以寫出多種新的編碼字元串。例如,三參數值的對應位元組順序重排,就可組成以下新的二進制碼串:

地球物理數據處理教程

模型參數的二進制編碼是一種數學上的抽象,通過編碼把具體的非線性問題和生物演化過程聯系了起來,因為這時形成的編碼字元串就相當於一組遺傳基因的密碼。不僅是二進制編碼,十進制編碼也可直接用於遺傳演算法。根據生物系統傳代過程的規律,這些基因信息將在繁殖中傳到下一帶,而下一代將按照「適者生存」的原則決定種屬的發展和消亡,而優化准則或目標函數就起到了決定「適者生存」的作用,即保留失擬較小的新模型,而放棄失擬大的模型。在傳帶過程中用編碼表示的基因部分地交合和變異,即字元串中的一些子串被保留,有的改變,以使傳代的過程向優化的目標演化。總的來說,遺傳演算法可分為三步:繁殖、雜交和變異。其具體實現過程見圖5.8。

圖5.8 遺傳演算法實現過程

5.4.2 遺傳演算法在地震反演中的應用

以地震走時反演為例,根據最小二乘准則使合成記錄與實測數據的擬合差取極小,目標函數可取為

地球物理數據處理教程

式中:Ti,0為觀測資料中提取出的地震走時;Ti,s為合成地震或射線追蹤算出的地震走時;ΔT為所有合成地震走時的平均值;NA為合成地震數據的個數,它可以少於實測Ti,0的個數,因為在射線追蹤時有陰影區存在,不一定能算出合成數據Tj,0。利用射線追蹤計算走時的方法很多,參見上一章。對於少數幾個波速為常數的水平層,走時反演的參數編碼方法可參照上一節介紹的分別對深度和速度編碼方法,二進制碼的字元串位數1不會太大。要注意的是由深度定出的字元串符合數值由淺到深增大的規律,這一約束條件不應在雜交和傳代過程中破壞。這種不等式的約束(h1<h2<h3…)在遺傳演算法中是容易實現的。

對於波場反演,較方便的做法是將地球介質作等間距的劃分。例如,將水平層狀介質細分為100個等厚度的水平層。在上地殼可假定波速小於6400 m/s(相當於解空間的硬約束),而波速空間距為100m/s,則可將波速用100m/s為單位,每層用6位二進制字元串表示波速,地層模型總共用600位二進制字元串表示(l=600)。初始模型可隨機地選取24~192個,然後通過繁殖雜交與變異。雜交概率在0.5~1.0之間,變異概率小於0.01。目標函數(即失擬方程)在頻率域可表示為

地球物理數據處理教程

式中:P0(ωk,vj)為實測地震道的頻譜;ωk為角頻率;vj為第j層的波速;Ps(ωk,vj)為相應的合成地震道;A(ωk)為地震儀及檢波器的頻率濾波器,例如,可取

A(ω)=sinC4(ω/ωN) (5.4.6)

式中ωN為Nyquist頻率,即ωN=π/Δt,Δt為時間采樣率。參數C為振幅擬合因子,它起到合成與觀測記錄之間幅度上匹配的作用。C的計算常用地震道的包絡函數的平均比值。例如,設E[]為波動信號的包絡函數,可令

地球物理數據處理教程

式中:tmax為包絡極大值的對應時間;J為總層數。包絡函數可通過復數道的模擬取得。

用遺傳演算法作波速反演時失擬最小的模型將一直保存到迭代停止。什麼時候停止傳代還沒有理論上可計算的好辦法,一般要顯示解空間的搜索范圍及局部密度,以此來判斷是否可以停止傳代。值得指出的是,由(5.4.4)和(5.4.5)式給出的目標函數對於有誤差的數據是有問題的,反演的目標不是追求對有誤差數據的完美擬合,而是要求出准確而且解析度最高的解估計。

遺傳演算法在執行中可能出現兩類問題。其一稱為「早熟」問題,即在傳代之初就隨機地選中了比較好的模型,它在傳代中起主導作用,而使其後的計算因散不開而白白浪費。通常,增加Q值可以改善這種情況。另一類問題正相反,即傳相當多代後仍然找不到一個特別好的解估計,即可能有幾百個算出的目標函數值都大同小異。這時,最好修改目標函數的比例因子(即(5.4.5)式的分母),以使繁殖概率Ps的變化范圍加大。

對於高維地震模型的反演,由於參數太多,相應的模型字元串太長,目前用遺傳演算法作反演的計算成本還嫌太高。實際上,為了加快計算,不僅要改進反演技巧和傳代的控制技術,而且還要大幅度提高正演計算的速度,避免對遺傳演算法大量的計算花費在正演合成上。

Ⅲ 遺傳演算法--GA

        遺傳演算法(GA)屬於 人工智慧啟發式演算法 ,啟發式演算法的目標就是 尋找原始問題的最優解 ,該演算法的定義為

         人類通過直觀常識和生活經驗,設計出一種以搜索最優解為目的,通過模擬大自然規律的演算法,該演算法在可以在接受的花銷(計算時間和存儲空間)范圍內找到問題實例的一個可行解,且該可行解和真實最優解的誤差一般不可以被估計

        當下主要有的啟發式演算法包括 遺傳演算法、退火法,蟻群演算法、人工神經網路等 ,這篇文章主要介紹遺傳演算法

        遺傳演算法的基本原理是模擬達爾文進化論 "物競天擇,適者生存" 的自然法則,其核心思想為

(1)將原始問題的參數,抽象為基因編碼

(2)將原始問題的可行解,抽象為基因排列的染色體組合

(3)將原始問題的解集規模,抽象為一定數量染色體組成的種群

(4)尋找可行解的過程,抽象為種群的進化過程(染色體選擇、交叉、變異等)

(5)比較可行解的優劣,抽象為量化比較不同種群對當前環境的適應程度

(6)逼近最優解的過程,抽象為淘汰適應度差的種群,保留適應度高的種群進行下一次進化

(7)問題的最優解,抽象為經過多次進化後,最終生存下來的精英種群

        理論上,通過有限次種群進化,生存下來的種群都是 精英染色體 ,是最適合當前環境條件的種群,也就可以無限逼近原始問題的最優解

相關生物學術語:

    為了大家更好了解遺傳演算法,在此之前先簡單介紹一下相關生物學術語,大家了解一下即可。

基因型(genotype):性狀染色體的內部表現;

表現型(phenotype):染色體決定的性狀的外部表現,或者說,根據基因型形成的個體的外部表現;

進化(evolution):種群逐漸適應生存環境,品質不斷得到改良。生物的進化是以種群的形式進行的。

適應度(fitness):度量某個物種對於生存環境的適應程度。

選擇(selection):以一定的概率從種群中選擇若干個個體。一般,選擇過程是一種基於適應度的優勝劣汰的過程。

復制(reproction):細胞分裂時,遺傳物質DNA通過復制而轉移到新產生的細胞中,新細胞就繼承了舊細胞的基因。

交叉(crossover):兩個染色體的某一相同位置處DNA被切斷,前後兩串分別交叉組合形成兩個新的染色體。也稱基因重組或雜交;

變異(mutation):復制時可能(很小的概率)產生某些復制差錯,變異產生新的染色體,表現出新的性狀。

編碼(coding):DNA中遺傳信息在一個長鏈上按一定的模式排列。遺傳編碼可看作從表現型到基因型的映射。

解碼(decoding):基因型到表現型的映射。

個體(indivial):指染色體帶有特徵的實體;

種群(population):個體的集合,該集合內個體數稱為種群

大體實現過程

遺傳演算法中每一條染色體,對應著遺傳演算法的一個解決方案,一般我們用適應性函數(fitness function)來衡量這個解決方案的優劣。所以從一個基因組到其解的適應度形成一個映射。 遺傳演算法的實現過程實際上就像自然界的進化過程那樣。

基本遺傳演算法概述

    1.[開始]生成n個染色體的隨機群體(適合該問題的解決方案)

    2.[適應度]評估群體中每個染色體x的適應度f(x)

    3.[新種群]通過重復以下來創建新種群直到新種群完成的步驟

        3.1 [選擇]根據種群的適合度選擇兩個親本染色體(更好的適應性,更大的選擇機會)

        3.2 [交叉]以交叉概率跨越父母形成新的後代(兒童) )。如果沒有進行交叉,後代就是父母的確切副本。

        3.3 [突變]突變概率突變每個基因座(染色體中的位置)的新後代。

    4.[接受]在新種群中放置新後代[替換]使用新生成的種群進一步運行演算法

    5.[測試]如果滿足結束條件,則停止並返回當前種群中的最佳解

    6。[循環]轉到步驟2

影響GA的因素

    從遺傳演算法概述可以看出,交叉和變異是遺傳演算法中最重要的部分。性能主要受這兩個因素的影響。在我們解釋有關交叉和變異的更多信息之前,我們將給出一些有關染色體的信息。

染色體編碼

染色體應該以某種方式包含它所代表的解決方案的信息。最常用的編碼方式是二進制字元串。然後染色體看起來像這樣:

每個染色體由二進制字元串表示。字元串中的每個位都可以表示解決方案的一些特徵。另一種可能性是整個字元串可以表示一個數字 - 這已在基本的GA小程序中使用。當然,還有許多其他的編碼方式。編碼主要取決於解決的問題。例如,可以直接編碼整數或實數,有時對某些排列等進行編碼很有用。

染色體交叉

在我們確定了將使用的編碼之後,我們可以繼續進行交叉操作。 Crossover對來自親本染色體的選定基因進行操作並產生新的後代。最簡單的方法是隨機選擇一些交叉點,並在此點之前從第一個父項復制所有內容,然後在交叉點之後復制另一個父交叉點之後的所有內容。交叉可以說明如下:( |是交叉點):

還有其他方法可以進行交叉,例如我們可以選擇更多的交叉點。交叉可能非常復雜,主要取決於染色體的編碼。針對特定問題進行的特定交叉可以改善遺傳演算法的性能。

4.染色體突變

在執行交叉之後,發生突變。突變旨在防止群體中的所有解決方案落入解決問題的局部最優中。突變操作隨機改變由交叉引起的後代。在二進制編碼的情況下,我們可以將一些隨機選擇的位從1切換到0或從0切換到1.突變可以如下所示:

突變(以及交叉)技術主要取決於染色體的編碼。例如,當我們編碼排列時,可以將突變作為兩個基因的交換來進行。

GA的參數

    1.交叉和突變概率

    GA有兩個基本參數 - 交叉概率和變異概率。

     交叉概率 :交叉的頻率。如果沒有交叉,後代就是父母的精確副本。如果存在交叉,則後代由父母染色體的部分組成。如果交叉概率為100%,那麼所有後代都是由交叉產生的。如果它是0%,那麼全新一代都是從舊種群的染色體的精確拷貝製成的(但這並不意味著新一代是相同的!)。交叉是希望新染色體將包含舊染色體的良好部分,因此新染色體將更好。但是,將舊人口的一部分留給下一代是好的。

     突變概率 :染色體部分突變的頻率。如果沒有突變,則在交叉(或直接復制)後立即生成後代而不進行任何更改。如果進行突變,則改變染色體的一個或多個部分。如果突變概率為100%,則整個染色體發生變化,如果是0%,則沒有變化。突變通常會阻止GA陷入局部極端。突變不應該經常發生,因為GA實際上會改變為隨機搜索。

    2.其他參數

     種群規模 :種群中有多少染色體(一代)。如果染色體太少,GA幾乎沒有可能進行交叉,只探索了一小部分搜索空間。另一方面,如果染色體太多,GA會減慢。研究表明,經過一定的限制(主要取決於編碼和問題),使用非常大的種群是沒有用的,因為它不能比中等規模的種群更快地解決問題。

     3      選擇

正如您從GA概述中已經知道的那樣,從群體中選擇染色體作為交叉的父母。問題是如何選擇這些染色體。根據達爾文的進化論,最好的進化能夠創造出新的後代。選擇最佳染色體的方法有很多種。例如輪盤賭選擇,Boltzman選擇,錦標賽選擇,等級選擇,穩態選擇和其他一些選擇。

1.輪盤賭選擇

父母根據他們的健康狀況選擇。染色體越好,它們被選擇的機會就越多。想像一下輪盤賭輪,人口中的所有染色體都放在那裡。輪盤中截面的大小與每條染色體的適應度函數的值成比例 - 值越大,截面越大。有關示例,請參見下圖。

輪盤賭中放入一塊大理石,並選擇停止的染色體。顯然,具有較大適應值的染色體將被選擇更多次。

該過程可以通過以下演算法來描述。

[Sum]計算總體中所有染色體擬合度的總和 - 總和S.

[Select]從區間(0,S)-r生成隨機數。

[循環]遍歷總體並從0 - 總和中求和。當總和s大於r時,停止並返回您所在的染色體。當然,對於每個群體,步驟1僅執行一次。

2.排名選擇

當健身值之間存在很大差異時,先前的選擇類型會出現問題。例如,如果最佳染色體適應度是所有擬合度總和的90%,那麼其他染色體將很少被選擇的機會。等級選擇首先對群體進行排序,然後每個染色體接收由該等級確定的適合度值。最差的將是健身1,第二個最差的2等等,最好的將具有適應度N(人口中的染色體數量)。您可以在下面的圖片中看到,在更改適應性與排名確定的數字後情況如何變化。

排名前的情況(適合度圖)

排名後的情況(訂單號圖)

現在所有染色體都有機會被選中。然而,這種方法會導致收斂速度變慢,因為最好的染色體與其他染色體的差別不大。

3.穩態選擇

這不是選擇父母的特定方法。這種選擇新種群的主要思想是染色體的很大一部分可以存活到下一代。穩態選擇GA以下列方式工作。在每一代中,選擇一些好的(具有更高適應性)染色體來創建新的後代。然後去除一些不好的(具有較低適合度)染色體並將新的後代放置在它們的位置。其餘人口倖存下來。

4.精英

精英主義的想法已經被引入。當通過交叉和變異創建新的種群時,我們有很大的機會,我們將失去最好的染色體。精英主義是首先將最佳染色體(或少數最佳染色體)復制到新種群的方法的名稱。其餘人口以上述方式構建。精英主義可以迅速提高GA的性能,因為它可以防止丟失最佳找到的解決方案。

交叉(Crossover)和突變 (Mutation)

交叉和變異是GA的兩個基本運算符。 GA的表現非常依賴於它們。運算符的類型和實現取決於編碼以及問題。有多種方法可以執行交叉和變異。在本章中,我們將簡要介紹一些如何執行多個編碼的示例和建議。

1.二進制編碼

交叉

單點交叉 - 選擇一個交叉點,從第一個父項復制從染色體開始到交叉點的二進制字元串,其餘從另一個父項復制

選擇兩點交叉 - 兩個交叉點,從第一個父節點復制從染色體開始到第一個交叉點的二進制字元串,從第一個父節點復制從第一個交叉點到第二個交叉點的部分,其餘的是再次從第一個父級復制

均勻交叉 - 從第一個父項或第二個父項中隨機復制位

算術交叉 - 執行一些算術運算以產生新的後代

突變

位反轉 - 選擇的位被反轉

2.置換編碼

交叉

單點交叉 - 選擇一個交叉點,將排列從第一個父項復制到交叉點,然後掃描另一個父項,如果該數字還沒有在後代中,則添加它注意:還有更多方法如何在交叉點之後產生休息

(1 2 3 4 5 6 7 8 9) + (4 5 3 6 8 9 7 2 1) = (1 2 3 4 5 6 8 9 7)

變異

順序更改 - 選擇並交換兩個數字

(1 2 3 4 5 6 8 9 7) => (1 8 3 4 5 6 2 9 7)

3.值編碼

交叉

可以使用來自二進制編碼的所有交叉

變異

添加一個小數字(用於實數值編碼) - 將一個小數字添加到(或減去)所選值

(1.29 5.68 2.86 4.11 5.55)=>(1.29 5.68 2.73 4.22 5.55)

4.樹編碼

交叉

樹交叉 - 在父母雙方中選擇一個交叉點,父母在該點被分割,交換點下面的部分被交換以產生新的後代

變異

更改運算符,數字 - 選定節點已更改

補充:

疑惑點:

初始種群是啥:

利用二進制(一般)表示最終解

例如:需要求解z=x^2+y^2的最大值,x={1,5,3,8},y={5,4,0,6}

用六位二進制數表示由x,y組成的解,例如:001100 表示x=1,y=4

001100 稱為一條基因序列,表示的是該問題的一種解決 方案

種群是包含多個基因序列(解決方案/個體)的集合

適應度函數是啥,有什麼作用:

適應度函數可以理解成「 游戲 規則」,如果問題較為復雜,需要自定義適應度函數,說明如何區分優秀與不優秀的個體; 如果問題比較簡單,例如上述求最大值的問題,則直接用此函數式作為適應度函數即可。作用:評定個體的優劣程度,從而決定其遺傳機會的大小。

怎麼選擇:

定義「適者生存不適者淘汰」的規則,例如:定義適應度高的被選擇的概率更大

怎麼交叉:

利用循環,遍歷種群中的每個個體,挑選另一個體進行交叉。例如,通過遍歷為基因序列A挑選出B配對,則取A的前半部分,B的後半部分,組合成新的個體(基因序列)C

如何變異:

隨機挑選基因序列上的某一位置,進行0-1互換

建議 GA的參數

如果您決定實施遺傳演算法,本章應該為您提供一些基本建議。這些建議非常籠統。您可能希望嘗試使用自己的GA來解決特定問題,因為沒有一般理論可以幫助您針對任何問題調整GA參數。

建議通常是對GA的經驗研究的結果,這些研究通常僅在二進制編碼上進行。

交叉率

交叉率一般應高,約為80%-95%。 (但是有些結果表明,對於某些問題,交叉率約為60%是最好的。)

突變率

另一方面,突變率應該非常低。最佳利率似乎約為0.5%-1%。

人口規模

可能令人驚訝的是,非常大的人口規模通常不會改善GA的性能(從找到解決方案的速度的意義上說)。良好的人口規模約為20-30,但有時大小為50-100是最好的。一些研究還表明,最佳種群規模取決於編碼字元串(染色體)的大小。這意味著如果你有32位染色體,那麼人口應該高於16位染色體。

選擇

可以使用基本的輪盤賭選擇,但有時排名選擇可以更好。查看有關選擇優缺點的章節。還有一些更復雜的方法可以在GA運行期間更改選擇參數。基本上,這些表現類似於模擬退火。如果您不使用其他方法來保存最佳找到的解決方案,則應確保使用精英主義。您也可以嘗試穩態選擇。

編碼

編碼取決於問題以及問題實例的大小。查看有關編碼的章節以獲取一些建議或查看其他資源。

交叉和變異

運算符取決於所選的編碼和問題。查看有關操作員的章節以獲取一些建議。您還可以查看其他網站。

搜索空間

    如果我們正在解決問題,我們通常會尋找一些最好的解決方案。所有可行解決方案的空間(所需解決方案所在的解決方案集)稱為搜索空間(也稱為狀態空間)。搜索空間中的每個點代表一種可能的解決方案。每個可能的解決方案可以通過其對問題的值(或適應度)進行「標記」。通過GA,我們在眾多可能的解決方案中尋找最佳解決方案 - 以搜索空間中的一個點為代表。然後尋找解決方案等於在搜索空間中尋找一些極值(最小值或最大值)。有時可以很好地定義搜索空間,但通常我們只知道搜索空間中的幾個點。在使用遺傳演算法的過程中,隨著進化的進行,尋找解決方案的過程會產生其他點(可能的解決方案)。

    問題是搜索可能非常復雜。人們可能不知道在哪裡尋找解決方案或從哪裡開始。有許多方法可用於尋找合適的解決方案,但這些方法不一定能提供最佳解決方案。這些方法中的一些是爬山,禁忌搜索,模擬退火和遺傳演算法。通過這些方法找到的解決方案通常被認為是很好的解決方案,因為通常不可能證明最佳方案。

NP-hard Problems

NP問題是一類無法用「傳統」方式解決的問題。我們可以快速應用許多任務(多項式)演算法。還存在一些無法通過演算法解決的問題。有很多重要問題很難找到解決方案,但是一旦有了解決方案,就很容易檢查解決方案。這一事實導致了NP完全問題。 NP代表非確定性多項式,它意味著可以「猜測」解決方案(通過一些非確定性演算法),然後檢查它。如果我們有一台猜測機器,我們或許可以在合理的時間內找到解決方案。為簡單起見,研究NP完全問題僅限於答案可以是或否的問題。由於存在輸出復雜的任務,因此引入了一類稱為NP難問題的問題。這個類並不像NP完全問題那樣受限。 NP問題的一個特徵是,可以使用一個簡單的演算法,可能是第一眼看到的,可用於找到可用的解決方案。但是這種方法通常提供了許多可能的解決方案 - 只是嘗試所有可能的解決方案是非常緩慢的過程(例如O(2 ^ n))。對於這些類型問題的更大的實例,這種方法根本不可用。今天沒有人知道是否存在一些更快的演算法來提供NP問題的確切答案。對於研究人員來說,發現這樣的演算法仍然是一項重大任務(也許你!:-))。今天許多人認為這種演算法不存在,因此他們正在尋找替代方法。替代方法的一個例子是遺傳演算法。 NP問題的例子是可滿足性問題,旅行商問題或背包問題。可以獲得NP問題匯編。

參考:

         https://www.jianshu.com/p/ae5157c26af9

        https://www.jianshu.com/p/b36b520bd187

Ⅳ 非線性解析反演與遺傳演算法的結合反演方法

周輝

(青島海洋大學海洋地球科學學院,青島266003)

何樵登

(長春地質學院地球物理系,長春130026)

摘要各向異性介質參數反演通常為非線性優化問題。非線性反演方法可以分為兩大類:隨機搜索方法,如Monte Carlo法、模擬退火和遺傳演算法及基於非線性最小平方理論的非線性解析反演方法。遺傳演算法能尋找到全局最優解,但它為一種較費時的方法。非線性解析反演方法能給出一個與初始模型有關的局部最優解。然而,這種方法具有較快的收斂速度。遺傳演算法與非線性解析反演方法相結合的反演方法利用這兩種反演方法的優點而克服其缺點。因此,結合反演方法既能快速收斂,又能尋找到全局最優解。如何合理地將遺傳演算法和非線性解析反演方法結合是十分重要的。本文提出一種結合方案,即在連續若干次遺傳演算法迭代後作一次非線性解析反演。理論算例表明結合反演方法具有上述特點。

關鍵詞遺傳演算法非線性解析反演非線性結合反演各向異性介質

1引言

遺傳演算法為隨機搜索類方法之一,它以概率論為理論基礎,用於求解多極值復雜優化問題[9]。遺傳演算法不要求已知模型空間中後驗概率密度的形狀並能廣泛搜索模型空間。遺傳演算法模擬自然選擇和遺傳規律,並遵循適者生存的原則。

遺傳演算法由Holland在1975年提出[4]。Berg首先將遺傳演算法應用於地球物理優化問題[1]。Stoffa等系統地研究了種群大小、交叉概率、選擇概率和變異概率對多參數優化問題收斂性和收斂速度的影響[11]。Sen等討論了在選擇概率中引入溫度參數的作用並提出一些退火方案[10]。周輝等則研究了目標函數與收斂速度和解的精度的關系[16]

基於最小平方優化理論的非線性反演方法是兩大類反演方法之一。當給定的初始模型位於目標函數全局最優解所在的峰谷附近時,這種下降類方法能給出正確解而與初始模型位置無關。下降類演算法研究得較深入,應用較廣。

Tarantola提出一種基於廣義最小二乘法的多維多偏移距聲波地震波形解釋的一般性非線性地震波形反演方法[12]。隨後,Tarantola將該理論推廣於各向同性介質的彈性波反演[13]。Gauthier等用理論數據驗證了Tarantola提出的方法的正確性[2]。稍後,Tarantola研究非線性解析法反射波彈性反演的策略,指出以縱橫波的波阻抗和密度作為反演參數,才盡可能使反演參數之間相互獨立[14]。Pan用τ—P變換研究層狀聲學介質中平面波地震記錄非線性解析反演的理論和可行性[6]。為了更多地利用地震數據中的信息,包括VSP資料中反射和轉換信息,Mora作了一些工作[5]。當僅用反射數據時反演主要解決引起反射的P波和S波的波阻抗突變。當利用轉換數據時,則能分辨大尺度的P波和S波速度變化。Sambridge等改進了修改模型的方法[8]。在子空間中,可同時得到P波、S波波阻抗和密度。周輝等將非線性梯度反演方法推廣於多維、多道、多分量任意彈性各向異性介質參數的反演[17]

非線性解析反演方法和遺傳演算法結合的反演方法利用非線性解析反演和遺傳演算法的優點,克服它們的缺點。因此,結合反演方法不僅能搜索到全局最優解,而且能較快地收斂。Porsani等在遺傳演算法和廣義線性反演方法相結合方面作了一些研究[7]

本文討論各向異性介質的非線性解析反演方法和遺傳演算法與非線性解析反演方法相結合的結合反演方法[17]。對於遺傳演算法讀者可參考遺傳演算法的相關文獻[3,9~11]

2各向異性介質參數非線性解析反演方法

2.1共軛梯度法

反演的目的是利用地面或井中測得的位移場ui(xr,t)求取地下介質密度分布ρ(x)和彈性參數分布Cijkl(x)。ρ(x)、Cijkl(x)稱為模型參數。x為研究介質中或邊界上任一點,x=(x1,x2,x3),xr為接收點。反演的目標是使目標函數

岩石圈構造和深部作用

取極小值。其中Cd、Cm分別為數據(波場)和模型參數的協方差運算元。m0為先驗模型參數,m為反演過程中求得的模型參數。由於模型參數有多個,故用向量表示。ucal為給定m的波動方程正演記錄,uobs為觀測波場,上角標t表示轉置。地震記錄u和模型參數m之間的函數關系為

岩石圈構造和深部作用

g為非線性運算元,(2)式為波動方程的運算元形式。記第n次迭代時的模型參數為mn,則有

岩石圈構造和深部作用

及共軛梯度法的迭代公式[15]

岩石圈構造和深部作用

其中Gn為g對mn的Frechet導數,ηn為一常數,可由多種方法計算[5,8]

梯度

為模型空間的對偶空間中的一個元素。模型空間和其對偶空間以模型參數的協方差運算元Cm=Diag(Cp,Cc)由式(4d)相聯系。在後面將給出

的表達式。

式(4)為梯度反演方法的基本公式。當該公式中的每一量都已知時,迭代就可進行。在這些變數中,最關鍵的是梯度向量。

2.2目標函數

在最小二乘理論中,權函數是協方差運算元逆的核。假設數據集中的誤差是不相關的,它僅取決於時間或源和接收器的位置,那麼有[14]

岩石圈構造和深部作用

其中σ為數據的均方差。

2.3各向異性介質中的彈性波動方程

令fi(x,t;xs)是第s次激發的內體力密度,Ti(x,t;xs)是地球表面S的應力矢量分量,ni(x)是表面的單位法向分量。那麼與第s次激發相應的位移由以下微分方程組給出[15]

岩石圈構造和深部作用

2.4梯度向量

式(4)中梯度向量的分量為[17]

岩石圈構造和深部作用

其中,T為地震記錄的長度,

為反向傳播場,滿足

岩石圈構造和深部作用

其中,t∈[T,0],

滿足終了時間條件。

3結合反演方法

3.1遺傳演算法和非線性解析反演方法的優缺點

遺傳演算法是利用概率論來求解多極值復雜優化問題的一種隨機搜索方法,由一組隨機選取的模型開始,不需要更多的先驗信息,廣泛而有效地對模型空間的最優部分采樣。盡管遺傳演算法是基於自然選擇、遺傳規律,搜索模型空間的最優部分而求得最優解,但它是一種計算量很大的方法。由於地震模型空間大,用全局最優化方法估計各向異性介質參數的地震波形反演十分費時。

目標函數的梯度信息是非線性解析反演方法修改模型參數的依據,它能給出一個接近初始模型的一個局部最優解。如果初始模型選擇得合適,即當初始模型處在全局最優解所在的目標函數低谷時,非線性解析反演方法能收斂於全局最優解。然而,恰好給出一個接近全局最優解的初始模型的概率是非常小的,尤其對沒有模型參數的任何先驗信息的情況。但應強調的是,非線性解析反演方法具有較快的收斂速度。

發揮非線性解析反演方法快速收斂和遺傳演算法能搜索到全局最優解的優點,而克服前者僅能尋找到局部最優解和後者運算量大的缺點是很有意義的。非線性解析反演方法和遺傳演算法相結合的反演方法可達到上述目的。在結合反演方法中,遺傳演算法的作用是提供接近全局最優解的模型,非線性解析反演的作用是盡快求出全局最優解。因此,結合反演方法具有搜索到全局最優解的能力和比遺傳演算法收斂速度快的特點。

3.2結合方案

遺傳演算法在優化過程中連續不斷地搜索整個模型空間。在每次迭代結束後,得到一個本代的最優模型。根據遺傳演算法的數學原理[3],最優模型的數量在下一代中得以增加,同時經交叉和變異作用又有新的模型產生。在下一代種群中,最優模型可能與前一代的相同,也有可能劣於前一代的最優模型。所有這些最優模型可能在目標函數的同一低谷處,也有可能在其它低谷處。遺傳演算法尋找最優模型要經過多次迭代才能確定一個極值。遺傳演算法的隨機性導致遺傳演算法是一種費時的方法。然而正是遺傳演算法的這種隨機性保證了它能搜索到全局最優解。

如果將每次遺傳演算法迭代的最優解作為非線性解析反演的初始模型,非線性解析反演可以找出與初始模型毗鄰的局部最優解。由於非線性解析反演是一種確定性的方法,它按目標函數的梯度方向修改模型,所以非線性解析反演方法只需幾次迭代即可收斂。非線性解析反演求得的解是否為全局最優解,非線性解析反演方法本身是無法得以保證的。只有當遺傳演算法提供接近全局最優解的初始模型時,非線性解析方法反演才能收斂到全局最優解。

結合反演方法中遺傳演算法和非線性解析反演方法的匹配方式是十分重要的。非線性解析反演方法得到接近遺傳演算法提供的初始模型的局部最優解後,在以後若干代中因遺傳演算法的隨機性而使其最優解與該局部最優解相同。如果每次遺傳演算法迭代後作非線性解析反演,那麼結合反演的結果在幾代內都是相同的。顯然其中的一些非線性解析反演是沒有必要的。因此,結合方式應為在連續多次遺傳演算法迭代後作一次非線性解析反演,然後將非線性解析反演的結果作為下一代種群中的一個母本模型。圖1為結合反演的框圖。

圖1結合反演框圖

4算例

為了驗證結合反演方法的優越性,對一維多層橫向各向同性介質參數的反演理論實例作了分析。

圖2是目標函數值與迭代次數的關系圖。在該結合反演算例中每次遺傳演算法迭代後就作一次非線性解析反演迭代。結合反演的誤差在開始幾次迭代中下降很快,尤其在前3次。結合反演方法在第10次迭代達到的較小誤差,遺傳演算法在第42次迭代才達到。結合反演的誤差比遺傳演算法的跳躍得嚴重。這是因為非線性解析反演得到的模型在遺傳演算法中作為母代參加繁衍。這個模型因遺傳演算法的隨機性常常被新的模型替代。這兩個模型可能位於目標函數兩個不同的低谷中,因此非線性解析反演的結果不同。

盡管結合反演的目標函數有些振盪,但也存在連續幾次迭代目標函數幾乎不變的現象。這意味著這幾次迭代的最優模型是很接近的。在這種情況下非線性解析反演不能提供較大的改進。所以,此時的非線性解析反演是沒有必要的,否則只能增加計算量。

圖2結合反演(實線)和遺傳演算法(虛線)的誤差與迭代次數的關系

結合反演中每次遺傳演算法迭代後作一次非線性解析反演迭代

圖3是另一個例子。在該結合反演例子中,每五次遺傳演算法迭代作一次非線性解析反演。在這里遺傳演算法佔主要地位。此時結合反演的誤差函數明顯比遺傳演算法的小。結合反演的誤差在第5次迭代末突然下降,並在第10次迭代時的小誤差,遺傳演算法在42代才達到。遺傳演算法始終沒有到達結合反演的最小誤差。結合反演的誤差在後期迭代過程中平穩下降,這是遺傳演算法佔主導地位的原因。

從該例可知,若遺傳演算法與非線性解析反演方法比較合理地結合,結合反演方法比遺傳演算法具有快得多的收斂速度。

5結論

非線性結合反演方法揚遺傳演算法和非線性解析反演方法之長,抑其之短,它是一種具有較快收斂速度的全局反演方法。

在結合反演中遺傳演算法和非線性解析反演方法的結合方式是重要的。從算例可得出,五次遺傳演算法迭代後作一次非線性解析反演的結合反演的效果明顯優於每次遺傳演算法迭代後都作非線性解析反演的結合反演的效果。但是在結合反演中連續作多少次遺傳演算法迭代及連續迭代次數在整個迭代過程中的可變性還有待於進一步研究。

圖3結合反演(實線)和遺傳演算法(虛線)的誤差與迭代次數的關系

結合反演中每五次遺傳演算法迭代後作一次非線性解析反演迭代

在結合反演中遺傳演算法的作用是提供接近全局最優解的初始模型。結合反演的運算速度主要取決於遺傳演算法的運算速度。均勻設計理論可以應用於遺傳演算法以加快隨機搜索的速度。

與遺傳演算法相同,其它隨機搜索方法也可用來與非線性解析反演方法形成結合反演方法。

參考文獻

[1]E.Berg.Simple convergent genetic algorithm for inversion of multiparameter data.SEG60 Expanded Abstracts,1990,Ⅱ,1126~1128.

[2]O.Gauthier,J.Virieux and A.Tarantola.Two-dimensional nonlinear inversion of seismic waveforms:Numerical results.Geophysics,1986,51,1387~1403.

[3]D.E.Goldberg.Genetic Algorithms in Search,Optimiztion,and Machine Learning.Addison-Wesley,Reading,MA,1989.

[4]J.H.Holland.Adaptation in Natural and Artifical Systems.The University of Michigan Press,Ann Arbor,1975.

[5]P.Mora.2D elastic inversion of multi-offset seismic data.Geophysics,1988,52,2031~2050.

[6]G.S.Pan,R.A.Phinney,and R.I.Odom.Full-waveform inversion of plane-wave seismograms in stratified acoustic media:Theory and feasibility.Geophysics,1988,53,21~31.

[7]M.J.Porsani,P.L.Stoffa,M.K.Sen,et al..A combined Genetic and linear inversion algorithm for seismic wave-form inversion.SEG63 Expanded Abstracts,1993,692~695.

[8]M.S.Sambridge,A.Tatantola and Kennet.An alternative strategy for nonlinear inversion of seismic waveforms.Geophysical Prospecting,1991,39,723~736.

[9]M.Sambridge,and G.Drijkoningen.Genetic algorithms in seismic waveform inversion.Geophys.J.Int.,1992,109,323~342.

[10]M.K.Sen,P.L.Stoffa.Rapid sampling of model space using genetic algorithms:examples from seismic waveform inversion.Geophys.J.Int.,1992,109,323~342.

[11]P.L.Stoffa,M.K.Sen.Nonlinear multiparametre optimization using genetic algorithms:Inversion of plane-wave seismograms.Geophysics,1991,56,1794~1810.

[12]A.Tarantola.Inversion of seismic reflection data in the acoustic approximation.Geophysics,1984(a),49,1259~1266.

[13]A.Tarantola.The seismic reflection inverse problem.In:F.Santosa,Y.-H.Pao,W.W.System,and C.Holland Eds.Inverse problems of acoustic and elastic waves.Soc.Instr.Appl.Math.,1984(b),104~181.

[14]A.Tarantola.A strategy for nonlinear elastic inversion of seismic reflection data.Geophysics,1986,51,1893~1903.

[15]A.Tarantola.Inverse problem theory:Methods for data fitting and model parameter estimation.Elsevier Science Publ.Co.Inc.,1987.

[16]周輝,何樵登.遺傳演算法在各向異性介質參數反演中的應用.長春地質學院學報,1995,25,增刊1,62~67.

[17]周輝.各向異性介質波動方程正演及其非線性反演方法研究.長春地質學院博士論文,1995.

Ⅳ 人工智慧之進化演算法

進化計算的三大分支包括:遺傳演算法(Genetic Algorithm ,簡稱GA)、進化規劃(Evolu-tionary Programming,簡稱EP)和進化策略(Evolution Strategies ,簡稱ES)。這三個分支在演算法實現方面具有一些細微的差別,但它們具有一個共同的特點,即都是藉助生物進化的思想和原理來解決實際問題。

遺傳演算法是一類通過模擬生物界自然選擇和自然遺傳機制的隨機化搜索演算法,由美國Holand J教授於1975年首次提出。它是利用某種編碼技術作用於稱為染色體的二進制數串,其基本思想是模擬由這些串組成的種群的進化過程,通過有組織的、然而是隨機的信息交換來重新組合那些適應性好的串。遺傳演算法對求解問題的本身一無所知,它所需要的僅是對演算法所產生的每個染色體進行評價,並根據適應性來選擇染色體,使適應性好的染色體比適應性差的染色體有更多的繁殖機會。遺傳演算法尤其適用於處理傳統搜索方法難於解決的復雜的非線性問題,可廣泛用於組合優化、機器學習、自適應控制、規劃設計和人工生命等領域,是21世紀有關智能計算中的關鍵技術之一。

1964年,由德國柏林工業大學的RechenbergI等人提出。在求解流體動力學柔性彎曲管的形狀優化問題時,用傳統的方法很難在優化設計中描述物體形狀的參數,然而利用生物變異的思想來隨機地改變參數值並獲得了較好效果。隨後,他們便對這種方法進行了深入的研究和發展,形成了進化計算的另一個分支——進化策略。

進化策略與遺傳演算法的不同之處在於:進化策略直接在解空間上進行操作,強調進化過程中從父體到後代行為的自適應性和多樣性,強調進化過程中搜索步長的自適應性調節;而遺傳演算法是將原問題的解空間映射到位串空間之中,然後再施行遺傳操作,它強調個體基因結構的變化對其適應度的影響。

進化策略主要用於求解數值優化問題。

進化規劃的方法最初是由美國人Fogel LJ等人在20世紀60年代提出的。他們在人工智慧的研究中發現,智能行為要具有能預測其所處環境的狀態,並按照給定的目標做出適當的響應的能力。在研究中,他們將模擬環境描述成是由有限字元集中符號組成的序列。

進化演算法與傳統的演算法具有很多不同之處,但其最主要的特點體現在下述兩個方面:

進化計算的智能性包括自組織、自適應和自學習性等。應用進化計算求解問題時,在確定了編碼方案、適應值函數及遺傳運算元以後,演算法將根據「適者生存、不適應者淘汰"的策略,利用進化過程中獲得的信息自行組織搜索,從而不斷地向最佳解方向逼近。自然選擇消除了傳統演算法設計過程中的-一個最大障礙:即需要事先描述問題的全部特點,並說明針對問題的不同特點演算法應採取的措施。於是,利用進化計算的方法可以解決那些結構尚無人能理解的復雜問題。

進化計算的本質並行性表現在兩個方面:

一是進化計算是內在並行的,即進化計算本身非常適合大規模並行。

二是進化計算的內含並行性,由於進化計算採用種群的方式組織搜索,從而它可以同時搜索解空間內的多個區域,並相互交流信息,這種搜索方式使得進化計算能以較少的計算獲得較大的收益。

Ⅵ 遺傳演算法的核心是什麼!

遺傳操作的交叉運算元。

在自然界生物進化過程中起核心作用的是生物遺傳基因的重組(加上變異)。同樣,遺傳演算法中起核心作用的是遺傳操作的交叉運算元。所謂交叉是指把兩個父代個體的部分結構加以替換重組而生成新個體的操作。通過交叉,遺傳演算法的搜索能力得以飛躍提高。

交叉運算元根據交叉率將種群中的兩個個體隨機地交換某些基因,能夠產生新的基因組合,期望將有益基因組合在一起。

(6)遺傳演算法原理提出的時間擴展閱讀

評估編碼策略常採用以下3個規范:

a)完備性(completeness):問題空間中的所有點(候選解)都能作為GA空間中的點(染色體)表現。

b)健全性(soundness): GA空間中的染色體能對應所有問題空間中的候選解。

c)非冗餘性(nonrendancy):染色體和候選解一一對應。

目前的幾種常用的編碼技術有二進制編碼,浮點數編碼,字元編碼,變成編碼等。

而二進制編碼是目前遺傳演算法中最常用的編碼方法。即是由二進制字元集{0,1}產生通常的0,1字元串來表示問題空間的候選解。

Ⅶ 遺傳演算法的現狀

進入90年代,遺傳演算法迎來了興盛發展時期,無論是理論研究還是應用研究都成了十分熱門的課題。尤其是遺傳演算法的應用研究顯得格外活躍,不但它的應用領域擴大,而且利用遺傳演算法進行優化和規則學習的能力也顯著提高,同時產業應用方面的研究也在摸索之中。此外一些新的理論和方法在應用研究中亦得到了迅速的發展,這些無疑均給遺傳演算法增添了新的活力。遺傳演算法的應用研究已從初期的組合優化求解擴展到了許多更新、更工程化的應用方面。
隨著應用領域的擴展,遺傳演算法的研究出現了幾個引人注目的新動向:一是基於遺傳演算法的機器學習,這一新的研究課題把遺傳演算法從歷來離散的搜索空間的優化搜索演算法擴展到具有獨特的規則生成功能的嶄新的機器學習演算法。這一新的學習機制對於解決人工智慧中知識獲取和知識優化精煉的瓶頸難題帶來了希望。二是遺傳演算法正日益和神經網路、模糊推理以及混沌理論等其它智能計算方法相互滲透和結合,這對開拓21世紀中新的智能計算技術將具有重要的意義。三是並行處理的遺傳演算法的研究十分活躍。這一研究不僅對遺傳演算法本身的發展,而且對於新一代智能計算機體系結構的研究都是十分重要的。四是遺傳演算法和另一個稱為人工生命的嶄新研究領域正不斷滲透。所謂人工生命即是用計算機模擬自然界豐富多彩的生命現象,其中生物的自適應、進化和免疫等現象是人工生命的重要研究對象,而遺傳演算法在這方面將會發揮一定的作用,五是遺傳演算法和進化規劃(Evolution Programming,EP)以及進化策略(Evolution Strategy,ES)等進化計算理論日益結合。EP和ES幾乎是和遺傳演算法同時獨立發展起來的,同遺傳演算法一樣,它們也是模擬自然界生物進化機制的智能計算方法,即同遺傳演算法具有相同之處,也有各自的特點。目前,這三者之間的比較研究和彼此結合的探討正形成熱點。
1991年D.Whitey在他的論文中提出了基於領域交叉的交叉運算元(Adjacency based crossover),這個運算元是特別針對用序號表示基因的個體的交叉,並將其應用到了TSP問題中,通過實驗對其進行了驗證。D.H.Ackley等提出了隨機迭代遺傳爬山法(Stochastic Iterated Genetic Hill-climbing,SIGH)採用了一種復雜的概率選舉機制,此機制中由m個「投票者」來共同決定新個體的值(m表示群體的大小)。實驗結果表明,SIGH與單點交叉、均勻交叉的神經遺傳演算法相比,所測試的六個函數中有四個表現出更好的性能,而且總體來講,SIGH比現存的許多演算法在求解速度方面更有競爭力。H.Bersini和G.Seront將遺傳演算法與單一方法(simplex method)結合起來,形成了一種叫單一操作的多親交叉運算元(simplex crossover),該運算元在根據兩個母體以及一個額外的個體產生新個體,事實上他的交叉結果與對三個個體用選舉交叉產生的結果一致。同時,文獻還將三者交叉運算元與點交叉、均勻交叉做了比較,結果表明,三者交叉運算元比其餘兩個有更好的性能。
1992年,英國格拉斯哥大學的李耘(Yun Li)指導博士生將基於二進制基因的遺傳演算法擴展到七進制、十進制、整數、浮點等的基因,以便將遺傳演算法更有效地應用於模糊參量,系統結構等的直接優化,於1997年開發了可能是世界上最受歡迎的、也是最早之一的遺傳/進化演算法的網上程序 EA_demo,以幫助新手在線互動式了解進化計算的編碼和工作原理 ,並在格拉斯哥召開第二屆IEE/IEEE遺傳演算法應用國際會議,於2000年組織了由遺傳編程(Genetic Programming)發明人斯坦福的 John Koza 等參加的 EvoNet 研討會,探索融合GA與GP結構尋優,超越固定結構和數值優化的局限性。
國內也有不少的專家和學者對遺傳演算法的交叉運算元進行改進。2002年,戴曉明等應用多種群遺傳並行進化的思想,對不同種群基於不同的遺傳策略,如變異概率,不同的變異運算元等來搜索變數空間,並利用種群間遷移運算元來進行遺傳信息交流,以解決經典遺傳演算法的收斂到局部最優值問題
2004年,趙宏立等針對簡單遺傳演算法在較大規模組合優化問題上搜索效率不高的現象,提出了一種用基因塊編碼的並行遺傳演算法(Building-block Coded Parallel GA,BCPGA)。該方法以粗粒度並行遺傳演算法為基本框架,在染色體群體中識別出可能的基因塊,然後用基因塊作為新的基因單位對染色體重新編碼,產生長度較短的染色體,在用重新編碼的染色體群體作為下一輪以相同方式演化的初始群體。
2005年,江雷等針對並行遺傳演算法求解TSP問題,探討了使用彈性策略來維持群體的多樣性,使得演算法跨過局部收斂的障礙,向全局最優解方向進化。

Ⅷ 什麼是遺傳演算法

遺傳演算法(Genetic Algorithm)是一類借鑒生物界的進化規律(適者生存,優勝劣汰遺傳機制)演化而來的隨機化搜索方法。它是由美國的J.Holland教授1975年首先提出,其主要特點是直接對結構對象進行操作,不存在求導和函數連續性的限定;具有內在的隱並行性和更好的全局尋優能力;採用概率化的尋優方法,能自動獲取和指導優化的搜索空間,自適應地調整搜索方向,不需要確定的規則。遺傳演算法的這些性質,已被人們廣泛地應用於組合優化、機器學習、信號處理、自適應控制和人工生命等領域。它是現代有關智能計算中的關鍵技術。
對於一個求函數最大值的優化問題(求函數最小值也類同),一般可以描述為下列數學規劃模型:
遺傳演算法式中x為決策
變數,式2-1為目標函數式,式2-2、2-3為約束條件,U是基本空間,R是U的子集。滿足約束條件的解X稱為可行解,集合R表示所有滿足約束條件的解所組成的集合,稱為可行解集合。
遺傳演算法的基本運算過程如下:
a)初始化:設置進化代數計數器t=0,設置最大進化代數T,隨機生成M個個體作為初始群體P(0)。
b)個體評價:計算群體P(t)中各個個體的適應度。
c)選擇運算:將選擇運算元作用於群體。選擇的目的是把優化的個體直接遺傳到下一代或通過配對交叉產生新的個體再遺傳到下一代。選擇操作是建立在群體中個體的適應度評估基礎上的。
d)交叉運算:將交叉運算元作用於群體。所謂交叉是指把兩個父代個體的部分結構加以替換重組而生成新個體的操作。遺傳演算法中起核心作用的就是交叉運算元。
e)變異運算:將變異運算元作用於群體。即是對群體中的個體串的某些基因座上的基因值作變動。
群體P(t)經過選擇、交叉、變異運算之後得到下一代群體P(t 1)。
f)終止條件判斷:若t=T,則以進化過程中所得到的具有最大適應度個體作為最優解輸出,終止計算。
遺傳演算法是從代表問題可能潛在的解集的一個種群(population)開始的,而一個種群則由經過基因(gene)編碼的一定數目的個體(indivial)組成。每個個體實際上是染色體(chromosome)帶有特徵的實體。染色體作為遺傳物質的主要載體,即多個基因的集合,其內部表現(即基因型)是某種基因組合,它決定了個體的形狀的外部表現,如黑頭發的特徵是由染色體中控制這一特徵的某種基因組合決定的。因此,在一開始需要實現從表現型到基因型的映射即編碼工作。由於仿照基因編碼的工作很復雜,我們往往進行簡化,如二進制編碼,初代種群產生之後,按照適者生存和優勝劣汰的原理,逐代(generation)演化產生出越來越好的近似解,在每一代,根據問題域中個體的適應度(fitness)大小選擇(selection)個體,並藉助於自然遺傳學的遺傳運算元(genetic operators)進行組合交叉(crossover)和變異(mutation),產生出代表新的解集的種群。這個過程將導致種群像自然進化一樣的後生代種群比前代更加適應於環境,末代種群中的最優個體經過解碼(decoding),可以作為問題近似最優解。

Ⅸ 遺傳演算法的基本原理

遺傳演算法本質上是對染色體模式所進行的一系列運算,即通過選擇運算元將當前種群中的優良模式遺傳到下一代種群中,利用交叉運算元進行模式重組,利用變異運算元進行模式突變。

Ⅹ 遺傳演算法原理簡介

遺傳演算法(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

閱讀全文

與遺傳演算法原理提出的時間相關的資料

熱點內容
雲伺服器app安卓下載 瀏覽:966
如何查看linux伺服器的核心數 瀏覽:137
交易平台小程序源碼下載 瀏覽:148
程序員記筆記用什麼app免費的 瀏覽:646
java與單片機 瀏覽:897
伺服器內網如何通過公網映射 瀏覽:478
程序員穿越到宋代 瀏覽:624
怎麼使用雲伺服器掛游戲 瀏覽:618
真實的幸福pdf 瀏覽:344
d盤php調用c盤的mysql 瀏覽:266
怎麼樣搭建源碼網站 瀏覽:429
新概念四冊pdf 瀏覽:363
怎麼下載悅虎檢測app 瀏覽:530
cad表達式命令 瀏覽:200
程序員去一個小公司值不值得 瀏覽:848
程序員做個程序多少錢 瀏覽:497
win10原始解壓軟體 瀏覽:321
阿里程序員的老家 瀏覽:260
量子加密銀行 瀏覽:195
命令方塊獲得指令手機 瀏覽:501