導航:首頁 > 源碼編譯 > 遺傳演算法模擬什麼

遺傳演算法模擬什麼

發布時間:2023-06-12 05:30:32

① 什麼是遺傳演算法

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

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

② 遺傳演算法具體應用

1、函數優化

函數優化是遺傳演算法的經典應用領域,也是遺傳演算法進行性能評價的常用算例,許多人構造出了各種各樣復雜形式的測試函數:連續函數和離散函數、凸函數和凹函數、低維函數和高維函數、單峰函數和多峰函數等。

2、組合優化

隨著問題規模的增大,組合優化問題的搜索空間也急劇增大,有時在目前的計算上用枚舉法很難求出最優解。對這類復雜的問題,人們已經意識到應把主要精力放在尋求滿意解上,而遺傳演算法是尋求這種滿意解的最佳工具之一。

此外,GA也在生產調度問題、自動控制、機器人學、圖象處理、人工生命、遺傳編碼和機器學習等方面獲得了廣泛的運用。

3、車間調度

車間調度問題是一個典型的NP-Hard問題,遺傳演算法作為一種經典的智能演算法廣泛用於車間調度中,很多學者都致力於用遺傳演算法解決車間調度問題,現今也取得了十分豐碩的成果。

從最初的傳統車間調度(JSP)問題到柔性作業車間調度問題(FJSP),遺傳演算法都有優異的表現,在很多算例中都得到了最優或近優解。


(2)遺傳演算法模擬什麼擴展閱讀:

遺傳演算法的缺點

1、編碼不規范及編碼存在表示的不準確性。

2、單一的遺傳演算法編碼不能全面地將優化問題的約束表示出來。考慮約束的一個方法就是對不可行解採用閾值,這樣,計算的時間必然增加。

3、遺傳演算法通常的效率比其他傳統的優化方法低。

4、遺傳演算法容易過早收斂。

5、遺傳演算法對演算法的精度、可行度、計算復雜性等方面,還沒有有效的定量分析方法。

③ 遺傳演算法-總結

最近在做遺傳演算法的項目,簡單記錄一下。
遺傳演算法是模擬自然界生物進化機制的一種演算法,在尋優過程中有用的保留無用的去除。包括3個基本的遺傳運算元:選擇(selection)、交叉(crossover)和變異(mutation)。遺傳操作的效果與上述3個遺傳運算元所取的操作概率、編碼方法、群體大小、初始群體,以及適應度函數的設定密切相關。
1、種群初始化
popsize 種群大小,一般為20-100,太小會降低群體的多樣性,導致早熟;較大會影響運行效率;迭代次數一般100-500;交叉概率:0.4-0.99,太小會破壞群體的優良模式;變異概率:0.001-0.1,太大搜索趨於隨機。編碼包括實數編碼和二進制編碼,可以參考遺傳演算法的幾個經典問題,TSP、背包問題、車間調度問題。
2、選擇
目的是把優化個體直接遺傳到下一代或通過配對交叉產生新的個體再遺傳到下一代,我大部分採用了輪盤賭的方法。具體可參考 http://my.oschina.net/u/1412321/blog/192454 輪盤賭方法各個個體的選擇概率和其適應值成比例,個體適應值越大,被選擇的概率也越高,反之亦然。在實際問題中,經常需要最小值作為最優解,有以下幾種方法進行轉換
a、0-1之間的數據,可以用1-該數值,則最小值與最大值互換;
b、 求倒數;
c、求相反數;
以上幾種方法均可以將最大值變為最小值,最小值變為最大值,便於利用輪盤賭選擇最優個體,根據實際情況來確定。
3、交叉
交叉即將兩個父代個體的部分結構加以替換重組而生成新個體的操作,通過交叉,遺傳演算法的搜索能力得以飛躍提高。根據編碼方法的不同,可以有以下的演算法:
a、實值重組
離散重組、中間重組、線性重組、擴展線性重組
b、二進制交叉
單點交叉、多點交叉、均勻交叉、洗牌交叉、縮小代理交叉
4、變異
基本步驟:對群中所有個體以事先設定的變異概率判斷是否進行變異;對進行變異的個體隨機選擇變異位進行變異。根據編碼表示方法的不同,有實值變異和二進制變異
變異的目的:
a、使遺傳演算法具有局部的隨機搜索能力。當遺傳演算法通過交叉運算元已接近最優解鄰域時,利用變異運算元的這種局部搜索能力可以加速向最優解收斂。顯然該情況下變異概率應取較小值,否則接近最優解的積木塊會因為變異遭到破壞。
b、使遺傳演算法可維持多樣性,以防止未成熟收斂現象。此時收斂概率應取較大值。
變異概率一般取0.001-0.1。
5、終止條件
當最優個體的適應度達到給定的閾值,或者最優個體的適應度和群體適應度不再上升時,或者迭代次數達到預設的代數時,演算法終止。預設代數一般為100-500。
6、其它
多變數:將多個變數依次連接
多目標:一種方法是轉化為單目標,例如按大小進行排序,根據排序和進行選擇,可以參考 https://blog.csdn.net/paulfeng20171114/article/details/82454310

④ 遺傳演算法<sup>[1,]</sup>

遺傳演算法,又稱基因演算法(Genetic Algorithm,簡稱GA),也是一種啟發式蒙特卡洛優化演算法。遺傳演算法最早是由Holland(1975)提出,它模擬了生物適者生存、優勝劣汰的進化過程,具有不依賴於初始模型的選擇、不容易陷入局部極小、在反演過程中不用計算偏導數矩陣等優點。遺傳演算法最早由Stoffa和Sen(1991)用於地震波的一維反演,之後在地球物理資料的非線性反演中得到廣泛的應用。GA演算法對模型群體進行追蹤、搜索,即模型狀態通過模型群體傳送,具有比模擬退火法更大、更復雜的「記憶」,潛力更大。

遺傳演算法在反演中的基本思路和過程是:

(1)將生物體看成模型,模型參數看成染色體,有多少個模型的參數就有多少個染色體。對每個模型的參數(染色體)用二進制進行編碼,這個編碼就是基因。

(2)隨機生成一個模型群體(相當於生物的種群),然後在模型群體中進行繁殖,通過母本的選擇、交換和變異等遺傳操作產生下一代,然後保留較好基因,淘汰較差基因。

(3)通過一代一代的繁殖優勝劣汰的進化過程,最後所剩下的種群基本上都是最優的基因,種群趨於一致。所謂群體「一致」,即群體目標函數的方差或標准差很小,或者群體目標函數的均值接近於極值(可能是極大值或極小值),從而獲得非線性反演問題所對應的最優解或近似最優解。

下面以一個實例來簡述遺傳演算法的基本過程。

[例1]設m是正整數,且0≤m≤127,求方程φ(m)=m2的極大值。

這個例子極為簡單,只有一個模型參數,因此只有一條染色體,目標函數的極值是極大值(此例子來自阮百堯課件)。遺傳演算法通過以下7個步驟來實現:

(1)模型參數二進制編碼。

每個模型參數就是一條染色體,把十進制的模型參數表示為二進制,這就是基因。首先確定二進制碼的長度(基因的長度):

2N=[mmax(i)-mmin(i)]/Δm(i) (8.20)

其中:N為第i條染色體基因的長度(也就是第i個模型參數的二進制碼位數);[mmin(i),mmax(i)]為第i個模型參數的取值范圍;Δm(i)為第i個模型參數的解析度。這樣就把模型參數離散化了,它只能按Δm(i)的整數倍變化。基因的長度按下式計算:

地球物理反演教程

其中:c為實數;N為基因長度,是整數;int[ ]為取整函數。上式表示如果c不是整數,那麼基因長度N就是對c取整後加1,這樣保證最小解析度。

基因的編碼按下式進行:

地球物理反演教程

其中:式(8.22)是編碼公式;k為基因編碼的十進制數,是整數;int[ ]為取整函數。把k轉化為二進制就是基因的編碼。解碼是按照式(8.23)進行的。首先把一個基因的二進制編碼轉化為十進制數k,然後按式(8.23)可以計算出第i個模型參數m(i)的十進制值。

例如:電阻率參數ρ(1),它的變化范圍為10~5000Ω·m,解析度為2Ω·m,設當前參數ρ(1)=133Ω·m,按式(8.21)計算得

c=11.28482,N=12

所以二進制基因長度為13位。

利用式(8.22)計算基因編碼k的十進制數:

k=int[(133-10)/2]=61

把它轉化為二進制數為:000000111101。所以ρ(1)=133 的二進制基因編碼為:000000111101。

解碼過程就是把二進制基因編碼變為十進制數k後用式(8.23)計算:

ρ(1)=10+61×2=132(Ω·m)

注意:基因編碼並不是直接把電阻率值變為二進制。此外,133這個值在基因里不會出現,因為解析度是2,所以表示為最接近的132。

對於[例1]問題來說,選解析度為1,0~127用二進制編碼需7位。

(2)產生初始模型種群。

生物繁殖進化需要一定數量的生物體種群,因此遺傳演算法開始時需要一定數量的初始模型。為保證基因的多樣性,隨機產生大量的初始模型作為初始種群,按照上面的編碼方式進行編碼。個體在模型空間中應分布均勻,最好是模型空間各代表區域均有成員。初始模型群體大,有利於搜索,但太大會增加計算量。

為保證演算法收斂,在初始模型群體中,有時候應增加各位都為0和都為1的成員。遺傳演算法就是在這個初始模型種群的基礎上進行繁殖,進化求解的。

對於[例1]問題來說,模型空間是0~127個數字,這樣初始種群最多具有128個個體。為了簡單,隨機選擇4個個體作為初始種群。初始種群的編碼、目標函數值見表8.1。

表8.1 初始種群編碼表

(3)模型選擇。

為了生成新一代模型,需要選擇較優的個體進行配對。生物進化按照自然選擇、優勝劣汰的准則進行。對應地,遺傳演算法按照一定的准則來選擇母本(兩個),然後進行配對繁殖下一代模型,這個選擇稱為模型選擇。模型配對最基本的方法是隨機采樣,用各模型的目標函數值對所有模型目標函數的平均值的比值定義繁殖概率,即

地球物理反演教程

其中:p(mi)為繁殖概率;φ(mi)為第i個模型的目標函數;φAVG為目標函數的平均值。對於極小化問題來說,規定目標函數值高於平均值的不傳代;對於極大化問題來說,反之即可。

就[例1]來說,要求目標函數取極大值,所以規定目標函數小於平均值的模型不傳代,大於它的可以傳代。對第一代,為了防止基因丟失,可先不捨去繁殖概率小的模型,讓它與概率大的模型配對。如:本例中70與56配對,101與15配對產生子代,見表8.2。

表8.2 基因交換表

(4)基因交換。

將配對的兩個親本模型的部分染色體相互交換,其中交換點可隨機選擇,形成兩個新的子代(見表8.2)。兩個染色體遺傳基因的交換過程是遺傳演算法的「繁殖」過程,是母本的重組過程。

為了使染色體的基因交換比較徹底,Stoffa等人提出了一個交換概率px來控制選擇操作的效果。如果px的值較小,那麼交換點的位置就比較靠低位,這時的交換操作基本是低位交換,交換前後模型的染色體變化不是太大。如果px的值較大,那麼交換點的位置就比較靠高位,此時的交換操作可以在較大的染色體空間進行,交換前後模型數值變化可以很大。

在[例1]中:15、101和56、70作為母本通過交換繁殖出子代5、6、111、120。所選擇的基因交換位置見表8.2。有下劃線的,是要交換的基因位置。

(5)更新。

母本模型和子本模型如何選擇保留一定數量作為新的母本,就是模型更新。不同的策略會導致不同的結果。一般而言,若產生的新一代模型較好,則選擇新一代模型而淘汰上一代模型。否則,則必須根據一定的更新概率pu來選擇上一代模型來取代新一代中某些較劣的模型。

經過更新以後,繁殖時對子代再進行優勝劣汰的選擇。對於極大值問題,大於目標函數平均值的子代可以繁殖,小於目標函數平均值的子代不能繁殖。由於新的種群能繁殖的個體數量減小了,所以要多繁殖幾次,維持種群個體的數量保持平衡。

在[例1]中,子代較好,所以完全淘汰上一代模型,完全用子代作為新的母本。選擇子代目標函數最大的兩個模型進行繁殖,分別是111、120。

(6)基因變異。

在新的配對好的母本中,按一定比例隨機選擇模型進行變異,變異操作就是模擬自然界中的環境因素,就是按比較小的變異概率pm將染色體某位或某幾位的基因發生突變(即將0變為1或將1變為0)。

變異操作的作用是使原來的模型發生某些變化,從而成為新的個體。這樣可使群體增加多樣性。變異操作在遺傳演算法中也起著至關重要的作用。實際上,由於搜索空間的性質和初始模型群體的優劣,遺傳演算法搜索過程中往往會出現所謂的「早熟收斂」現象,即在進化過程中早期陷入局部解而中止進化。採用合適的變異策略可提高群體中個體的多樣性,從而防止這種現象的出現,有助於模型跳出局部極值。表8.3為[例1]的基因變異繁殖表。

表8.3 基因變異繁殖表

在[例1]中,用111、120分別繁殖兩次,形成4個子代,維持種群數量平衡。隨機選擇120進行變異,變異的位數也是隨機的。這里把它的第2位進行變異,即從1變為0,繁殖後形成子代為:70、110、121、127。可以看出新的子代比初始種群要好得多,其中甚至已經出現了最優解。如果對於地球物理的極小值問題,我們可以預先設置一個擬合精度,只要在種群中出現一個達到擬合精度的模型就可以終止反演了。

(7)收斂。

重復(3)~(6)的步驟,模型群體經多次選擇、交換、更新、變異後,種群個體數量大小不變,模型目標函數平均值趨於穩定,最後聚集在模型空間中一個小范圍內,則找到了全局極值對應的解,使目標函數最大或最小的模型就是全局最優模型。

對於具有多解性的地球物理反演問題來說,通過這一步有可能找到滿足擬合精度的多個模型,對於實際反演解釋、推斷具有較高的指導意義。

遺傳演算法中的各種概率包括交換概率px、變異概率pm以及更新概率pu,這些參數的選擇與設定目前尚無統一的理論指導,多數都視具體問題而定。Stoffa等(1991)的研究表明,適中的交換概率(px≈0.6)、較小的變異概率(pm≈0.01)和較大的更新概率(pu≈0.9),遺傳演算法的性能較優。

與模擬退火反演演算法相同,遺傳演算法與傳統的線性反演方法相比,該方法具有:不依賴初始模型的選擇、能尋找全局最小點而不陷入局部極小、在反演過程中不用計算雅克比偏導數矩陣等優點。另外,遺傳演算法具有並行性,隨著並行計算和集群式計算機技術的發展,該演算法將會得到越來越廣泛的研究與應用。

但是遺傳演算法作為類蒙特卡洛演算法同樣需要進行大量的正演計算,種群個體數量越大,繁衍代數越多,則計算量越大。所以和前面的最小二乘法相比,速度不是它的優勢。

⑤ 遺傳演算法理解

遺傳演算法是一種進化演算法,進化是什麼哪?就是種群逐漸適應生存環境,種群中個體不斷得到改良的過程。

遺傳演算法是一種對生物遺傳的模擬、在演算法中,初始化一個種群,種群中的每個染色體個體都是一種解決方案,我們通過適應性fitness來衡量這個解決方案的好壞。並對它們進行選擇、變異、交叉的操作,找到最優的解決方案。

總結一下遺傳演算法的基本的步驟:

1.初始化一個種群,並評估每條染色體所對應個體的適應度。

2.選擇、交叉、變異,產生新的種群

3.再評估每個個體的適應值,如果適應值達到要求或者達到最大循環次數,否則重復2,不斷產生新種群。

知道了GA的大致流程之後、來具體分析一下細節,怎麼實現吧

我們知道遺傳演算法起源於生物遺傳,因此在種群中每個個體就是一個染色體,那如何對染色體進行編碼,讓它表示我們的解決方案那(就是把現實要優化的參數用編碼表示成一個染色體)。這里就遇到了一個編碼、解碼的問題,我們將需要優化的目標編碼成染色體,然後再解碼為我們可以用來計算fitness的解;

一般在進行參數優化時,一般有兩種方式:實數編碼、二進制編碼

實數編碼:基因直接用實數進行表示,這樣的表示方法比較簡單,不用特意解碼了,但是在交叉和變異時,容易過早收斂,陷入局部最優。

二進制編碼:將基因用二進制的形式表示,將參數的值轉化為二進制形式,這樣交叉、變異時更好操作,多樣性好,但是佔用的存儲空間大,需要解碼。

染色體就稱為個體。對於一次實驗,個體就是需要優化參數的一種解、許多這樣的個體就構成了種群。

在面對群體中那麼多個體時,如何判斷個體的好壞呢,就是通過適應值函數了,將解帶入適應值函數,適應值越大、解越好。

在遺傳演算法中,我們怎麼使得裡面的個體變得越來越優秀呢?

核心思想就是:選擇優秀的、淘汰不好的,並且為了生成更好的解,我們要嘗試交叉、變異,帶來新的解。

選擇就是從當前的種群中選擇出比較好的個體、淘汰不好的個體

常見的選擇方法有:輪盤賭選擇、錦標賽選擇、最佳保留選擇等等

輪盤賭選擇就是根據每個個體fitness和種群所有fitness之和比較,確定每個個體被選中的概率,然後進行n次選擇,選擇n個個體構成新種群,是一種放回抽樣的方式。

錦標賽就是每次從種群中選擇m個個體,選擇最優的,放入新種群,重復選擇,直到新種群中個體數目達到n。

最佳保留選擇就是在輪盤賭的基礎上,將fitness個體先加進新種群,因為輪盤賭是一種概率模型,可能存在最優個體沒有進入新種群的情況。

在選擇之後,就要考慮產生新的、更優秀的解,為種群帶來新的血液。遺傳演算法的思路是交叉兩個優秀的解,往往get好的解。

交叉通過在經過選擇的種群中,隨機選擇一對父母,將它們的染色體進行交叉,生成新的個體,替代原來的解。

常用的交叉方法有:單點交叉、多點交叉等等。

交叉就像生物裡面,染色體交換基因一樣的~但是並不是種群中所有個體都進行交叉的,實現時可以,設置一個交叉率和交叉概率,隨機選擇種群中兩個體、隨機一個數,小於交叉率就進行交叉操作,並根據交叉概率判斷交叉的程度,從而生成新個體,反之就保留這兩個體。

變異也是一種產生新個體的方式,通過改變個體上基因,期望產生更好的解。比如在以二進制編碼的個體上,將裡面的0、1進行等位變化啥的,就是0變1、1變0這樣。同樣也要考慮變異率、變異產生的新解是不可控的,可能很好,也可能很壞,不能像交叉一樣,確保一定的效果,所以往往變異率設置的比較小。

⑥ 遺傳演算法

最近開發了一個模型辨識的軟體,發現在計算速度方面需要進行優化,於是查找優化相關的演算法,這兩天在網上搜了搜關於遺傳演算法相關的資料,記錄一下自己對遺傳演算法的理解。

遺傳演算法通過模擬自然界生物種群進化的過程,通過選擇、交叉、變異等機制,在某個范圍的解空間內尋找一個最優解。遺傳演算法中通過適應度函數(可以看做目標函數的變形)來評價一個個體(解)與最優解的近似程度,設計適應度函數一定意義上與問題本身的目標函數線性相關。

遺傳演算法的組成:

1.編碼。把解空間內的元素用一定的編碼方式表示(常見為二進制數)。

2.初始化群體。選定種群大小(每次迭代過程中需要計算、評價的解的個數),隨機填充

3.適應度。根據適應度函數對種群進行排序。

4.遺傳運算元。即通過選擇、交叉、變異產生下一代種群。

5.根據終止判定法則判斷是否已找到最優解或者繼續循環。

這里有幾個問題:

遺傳演算法的優點在於無需對解空間內的每一個解進行計算和比較,一定程度上優化了計算速度,但是收斂速度具有隨機性。這里我對遺傳演算法還有一些疑問:假如解空間的規模不是很大,例如幾百,那麼如果選取的種群太大,可能進行一兩次迭代就幾乎遍歷了解空間內的所有元素,與順序遍歷沒什麼差別;如果選取的種群太小,進行交叉、變異操作時,由於基數小,會不會導致演算法停滯?(子代與父代完全相同)

選擇(以輪盤賭選擇方法為例)是不是相當於對父代進行種群大小次數的選擇,產生子代,那麼子代中適應度較高的解會重復出現,適應度越高償付概率越大。重復項需要剔除,然後從解空間內隨機填充嗎?還是說保留重復項?(同理交叉、變異種出現的重復項如何處理?)

另外,該如何終止判定法則該如何確定?

⑦ 遺傳演算法概念

遺傳演算法是模擬達爾文的生物進化理論,結合進化中優勝劣汰的概念,是一種基於自然選擇和遺傳學原理的搜索演算法。

⑧ 遺傳演算法的基本原理

遺傳演算法的基本原理是:

遺傳演算法是一種基於自然選擇和群體遺傳機理的搜索演算法,它模擬了自然選擇和自然遺傳過程中的繁殖、雜交和突變現象,在利用遺傳演算法求解問題時,問題的每一個可能解都被編碼成一個"染色體",即個體,若干個個體構成了群體(所有可能解)。在遺傳演算法開始時總是隨機的產生一些個體(即初始解),根據預定的目標函數對每一個個體進行評估,給出一個適應度值,基於此適應度值,選擇一些個體用來產生下一代,選擇操作體現了適者生存的原理,」好「的個體被用來產生下代,「壞」的個體則被淘汰,然後選擇出來的個體經過交叉和變異,運算元進行再組合生成新的一代,這一代的個體由於繼承了上代的一些優良性狀,因而在性能上上要優於上一代,這樣逐步朝著最優解的方向進化,因此,遺傳演算法可以看成是一個由可行解組成的群體初步進化的過程。

閱讀全文

與遺傳演算法模擬什麼相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:758
蘋果郵件無法連接伺服器地址 瀏覽:963
phpffmpeg轉碼 瀏覽:672
長沙好玩的解壓項目 瀏覽:145
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:486
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:383
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:350
風翼app為什麼進不去了 瀏覽:779
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:151
伊克塞爾文檔怎麼進行加密 瀏覽:893
app轉賬是什麼 瀏覽:163