① 遺傳演算法
遺傳演算法是從代表問題可能潛在解集的一個種群開始的,而一個種群則由經過基因編碼的一定數目的個體組成。每個個體實際上是染色體帶有特徵的實體。染色體作為遺傳物質的主要載體,即多個基因的集合,其內部表現(即基因型)是某種基因的組合,它決定了個體形狀的外部表現,如黑頭發的特徵是由染色體中控制這一特徵的某種基因組合決定的。因此,在一開始需要實現從表現型到基因型的映射即編碼工作。由於仿照基因編碼的工作很復雜,我們往往進行簡化,如二進制編碼。初始種群產生之後,按照適者生存和優勝劣汰的原理,逐代(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=(bi-αi)/N (5.4.1)
於是,所有允許的模型m將被限制在集
xi=αi+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的變化范圍加大。
對於高維地震模型的反演,由於參數太多,相應的模型字元串太長,目前用遺傳演算法作反演的計算成本還嫌太高。實際上,為了加快計算,不僅要改進反演技巧和傳代的控制技術,而且還要大幅度提高正演計算的速度,避免對遺傳演算法大量的計算花費在正演合成上。
② 遺傳演算法的核心是什麼!
遺傳操作的交叉運算元。
在自然界生物進化過程中起核心作用的是生物遺傳基因的重組(加上變異)。同樣,遺傳演算法中起核心作用的是遺傳操作的交叉運算元。所謂交叉是指把兩個父代個體的部分結構加以替換重組而生成新個體的操作。通過交叉,遺傳演算法的搜索能力得以飛躍提高。
交叉運算元根據交叉率將種群中的兩個個體隨機地交換某些基因,能夠產生新的基因組合,期望將有益基因組合在一起。
(2)遺傳演算法中編碼的目的擴展閱讀
評估編碼策略常採用以下3個規范:
a)完備性(completeness):問題空間中的所有點(候選解)都能作為GA空間中的點(染色體)表現。
b)健全性(soundness): GA空間中的染色體能對應所有問題空間中的候選解。
c)非冗餘性(nonrendancy):染色體和候選解一一對應。
目前的幾種常用的編碼技術有二進制編碼,浮點數編碼,字元編碼,變成編碼等。
而二進制編碼是目前遺傳演算法中最常用的編碼方法。即是由二進制字元集{0,1}產生通常的0,1字元串來表示問題空間的候選解。
③ 遺傳演算法的特點
遺傳演算法具有十分頑強的魯棒性[56,53],這是因為比起普通的優化搜索方法,它採用了許多獨特的方法和技術,歸納起來,主要有以下幾個方面。
遺傳演算法的處理對象不是參數本身,而是對參數集進行了編碼的個體。此編碼操作,使得遺傳演算法可直接對結構對象進行操作。所謂結構對象泛指集合、序列、矩陣、樹、圖、鏈和表等各種一維或二維甚至三維結構形式的對象。這一特點,使得遺傳演算法具有廣泛的應用領域。比如:
①通過對連接矩陣的操作,遺傳演算法可用來對神經網路或自動機的結構或參數加以優化;②通過對集合的操作,遺傳演算法可實現對規則集合或知識庫的精煉而達到高質量的機器學習目的;③通過對樹結構的操作用遺傳演算法可得到用於分類的最佳決策樹;④通過對任務序列的操作,遺傳演算法可用於任務規劃,而通過對操作序列的處理遺傳演算法可自動構造順序控制系統。
如前所述許多傳統搜索方法都是單點搜索演算法,即通過一些變動規則,問題的解從搜索空間中的當前解(點)移到另一解(點)。這種點對點的搜索方法,對於多峰分布的搜索空間常常會陷於局部的某個單峰的優解。相反,遺傳演算法是採用同時處理群體中多個個體的方法,即同時對搜索空間中的多個解進行評估,更形象地說,遺傳演算法是並行地爬多個峰。這一特點使遺傳演算法具有較好的全局搜索性能,減少了陷於局部優解的風險,同時這使遺傳演算法本身也十分易於並行化。
在標準的遺傳演算法中,基本上不用搜索空間的知識或其他輔助信息,無需導數或其他輔助信息,而僅用適應度函數值來評估個體,並在此基礎上進行遺傳操作。需要著重提出的是,遺傳演算法的適應度函數不僅不受連續可微的約束,而且其定義域可以任意設定。對適應度函數的惟一要求是,對於輸入可計算出加以比較的正的輸出。遺傳演算法的這一特點使它的應用范圍大大擴展。
圖7-1 基本遺傳演算法的框圖
遺傳演算法不是採用確定性規則,而是採用概率的變遷規則來指導它的搜索方向。在以後的章節中我們將會看到,遺傳演算法採用概率僅僅是作為一種工具來引導其搜索過程朝著搜索空間的更優化的解區域移動。因此雖然看起來它是一種盲目搜索方法,但實際上有明確的搜索方向。
遺傳演算法利用簡單的編碼技術和繁殖機制來表現復雜的現象,從而解決非常困難的問題。特別是由於它不受搜索空間的限制性假設的約束,不必要求諸如連續性、導數存在和單峰等假設,它能從離散的、多極值的、含有噪音的高維問題中以很大的概率找到全局最優解;其次,由於它固有的並行性,遺傳演算法非常適用於大規模並行計算。遺傳演算法目前已經在優化、機器學習和並行處理等領域得到了越來越廣泛的應用。
④ 遺傳演算法的中心思想
遺傳演算法是通過大量備選解的變換、迭代和變異,在解空間中並行動態地進行全局搜索的最優化方法,由於遺傳演算法具有比較完備的數學模型和理論,在解決很多NP—Hard問題上具有良好的性能。
遺傳演算法以一種群體中的所有個體為對象,並利用隨機化技術指導對一個被編碼的參數空間進行高效搜索。其中選擇、交叉和變異構成了遺傳演算法的遺傳操作,參數編碼、初始群體的設定、適應度函數的設計、遺傳操作設計、控制參數設定五個要素組成了遺傳演算法的核心內容。
(4)遺傳演算法中編碼的目的擴展閱讀:
遺傳演算法注意事項:
用戶需要注意遺傳演算法的優化過程中種群基因的多樣性是保障避免陷入局部最優解的重要因素,如果目標函數優化結果過早收斂很可能就是因為種群的多樣性不足。
為了保證種群的多樣性,其中編碼、適應度函數設計尤為重要。
適應度的含義就是字面意思,這個個體是否可以適應環境也即是否滿足優化目標指標。因為後續需要根據適應度函數進行自然選擇,因此適應度函數和你的目標函數並不需要完全一樣。
⑤ 遺傳演算法的編碼方法有幾種
常用的編碼介紹
1、二進制編碼:
(1)定義:二進制編碼方法是使用二值符號集{0,1},它所構成的個體基因型是一個二進制編碼符號串。二進制編碼符號串的長度與問題所要求的求解精度有關。
(2)舉例:0≤x≤1023,精度為1,m表示二進制編碼的長度。則有建議性說法:使
2m-1≤1000(跟精度有關)≤2m-1。取m=10
則X:0010101111就可以表示一個個體,它所對應的問題空間的值是x=175。
(3)優缺點
優點:符合最小字元集原則,便於用模式定理分析;
缺點:連續函數離散化時的映射誤差。
2、格雷碼編碼
(1)定義:格雷碼編碼是其連續的兩個整數所對應的編碼之間只有一個碼位是不同的,其餘碼位完全相同。它是二進制編碼方法的一種變形。
十進制數0—15之間的二進制碼和相應的格雷碼分別編碼如下。
二進制編碼為:0000,0001,0010,001
1,0100。0101,0110,0111,
1000,1001,1010,1011,1100,1101,1110,1111;
格雷碼編碼為:0000,0001,0011,0010,0110,0111,0101,0100,
1100,1101,1111,1110,1010,1011,1001,1000。
(2)舉例:對於區間[0。1023]中兩個鄰近的整數X1=175和X2=176,若用長度為10位的二進制編碼,可表示為X11:0010101111和X12
0010110000,而使用同樣長度的格雷碼,它們可分別表示為X21:0010101111和X22:0010101000。
(3)優點:增強了遺傳演算法的局部搜索能力,便於連續函數的局部控制項搜索。
3、浮點數(實數)編碼
(1)定義:浮點數編碼是指個體的每個基因值用某一范圍內的一個浮點數來表示,而個體的編碼長度等於其決策變數的個數。因為這種編碼方法使用的決策變數的真實值,也稱之為真值編碼方法。
(2)舉例:
(3)優點:實數編碼是遺傳演算法中在解決連續參數優化問題時普遍使用的一種編碼方式,具有較高的精度,在表示連續漸變問題方面具有優勢。
4、排列編碼
排列編碼也叫序列編碼,是針對一些特殊問題的特定編碼方式。排序編碼使問題簡潔,易於理解。該編碼方式將有限集合內的元素進行排列。若集合內包含m個元素,則存在m!種排列方法,當m不大時,m!也不會太大,窮舉法就可以解決問題。當m比較大時,m!就會變得非常大,窮舉法失效,遺傳演算法在解決這類問題上具有優勢。如解決TSP問題時,用排列編碼自然、合理。
5、其它編碼方式
多參數級聯編碼等
⑥ 遺傳演算法的編碼方式誰能詳細介紹下謝謝
假如你想要編碼為x,設x的范圍是,二進制編碼長度為10,那二進解碼方式是:x*(max-min)/1023,這個不用開始編碼,開始你可以用rand(n,10)產生n個樣本的隨機數,然後優化即可。
不是能把「數學模型中的目標函數和每一條約束函數分別編程Matlab里的M文件」,是你用遺傳演算法就必須要編進去,電腦怎麼知道往哪個方向優化是好的,要不把你郵箱留下,我給你發個尋求最大值的遺傳演算法。
⑦ 遺傳演算法的運算過程
遺傳操作是模擬生物基因遺傳的做法。在遺傳演算法中,通過編碼組成初始群體後,遺傳操作的任務就是對群體的個體按照它們對環境適應度(適應度評估)施加一定的操作,從而實現優勝劣汰的進化過程。從優化搜索的角度而言,遺傳操作可使問題的解,一代又一代地優化,並逼近最優解。
遺傳操作包括以下三個基本遺傳運算元(genetic operator):選擇(selection);交叉(crossover);變異(mutation)。這三個遺傳運算元有如下特點:
個體遺傳運算元的操作都是在隨機擾動情況下進行的。因此,群體中個體向最優解遷移的規則是隨機的。需要強調的是,這種隨機化操作和傳統的隨機搜索方法是有區別的。遺傳操作進行的高效有向的搜索而不是如一般隨機搜索方法所進行的無向搜索。
遺傳操作的效果和上述三個遺傳運算元所取的操作概率,編碼方法,群體大小,初始群體以及適應度函數的設定密切相關。 從群體中選擇優勝的個體,淘汰劣質個體的操作叫選擇。選擇運算元有時又稱為再生運算元(reproction operator)。選擇的目的是把優化的個體(或解)直接遺傳到下一代或通過配對交叉產生新的個體再遺傳到下一代。選擇操作是建立在群體中個體的適應度評估基礎上的,目前常用的選擇運算元有以下幾種:適應度比例方法、隨機遍歷抽樣法、局部選擇法。
其中輪盤賭選擇法 (roulette wheel selection)是最簡單也是最常用的選擇方法。在該方法中,各個個體的選擇概率和其適應度值成比例。設群體大小為n,其中個體i的適應度為,則i 被選擇的概率,為遺傳演算法
顯然,概率反映了個體i的適應度在整個群體的個體適應度總和中所佔的比例。個體適應度越大。其被選擇的概率就越高、反之亦然。計算出群體中各個個體的選擇概率後,為了選擇交配個體,需要進行多輪選擇。每一輪產生一個[0,1]之間均勻隨機數,將該隨機數作為選擇指針來確定被選個體。個體被選後,可隨機地組成交配對,以供後面的交叉操作。 在自然界生物進化過程中起核心作用的是生物遺傳基因的重組(加上變異)。同樣,遺傳演算法中起核心作用的是遺傳操作的交叉運算元。所謂交叉是指把兩個父代個體的部分結構加以替換重組而生成新個體的操作。通過交叉,遺傳演算法的搜索能力得以飛躍提高。
交叉運算元根據交叉率將種群中的兩個個體隨機地交換某些基因,能夠產生新的基因組合,期望將有益基因組合在一起。根據編碼表示方法的不同,可以有以下的演算法:
a)實值重組(real valued recombination)
1)離散重組(discrete recombination)
2)中間重組(intermediate recombination)
3)線性重組(linear recombination)
4)擴展線性重組(extended linear recombination)。
b)二進制交叉(binary valued crossover)
1)單點交叉(single-point crossover)
2)多點交叉(multiple-point crossover)
3)均勻交叉(uniform crossover)
4)洗牌交叉(shuffle crossover)
5)縮小代理交叉(crossover with reced surrogate)。
最常用的交叉運算元為單點交叉(one-point crossover)。具體操作是:在個體串中隨機設定一個交叉點,實行交叉時,該點前或後的兩個個體的部分結構進行互換,並生成兩個新個體。下面給出了單點交叉的一個例子:
個體A:1 0 0 1 ↑1 1 1 → 1 0 0 1 0 0 0 新個體
個體B:0 0 1 1 ↑0 0 0 → 0 0 1 1 1 1 1 新個體 變異運算元的基本內容是對群體中的個體串的某些基因座上的基因值作變動。依據個體編碼表示方法的不同,可以有以下的演算法:
a)實值變異
b)二進制變異。
一般來說,變異運算元操作的基本步驟如下:
a)對群中所有個體以事先設定的變異概率判斷是否進行變異
b)對進行變異的個體隨機選擇變異位進行變異。
遺傳演算法引入變異的目的有兩個:一是使遺傳演算法具有局部的隨機搜索能力。當遺傳演算法通過交叉運算元已接近最優解鄰域時,利用變異運算元的這種局部隨機搜索能力可以加速向最優解收斂。顯然,此種情況下的變異概率應取較小值,否則接近最優解的積木塊會因變異而遭到破壞。二是使遺傳演算法可維持群體多樣性,以防止出現未成熟收斂現象。此時收斂概率應取較大值。
遺傳演算法中,交叉運算元因其全局搜索能力而作為主要運算元,變異運算元因其局部搜索能力而作為輔助運算元。遺傳演算法通過交叉和變異這對相互配合又相互競爭的操作而使其具備兼顧全局和局部的均衡搜索能力。所謂相互配合.是指當群體在進化中陷於搜索空間中某個超平面而僅靠交叉不能擺脫時,通過變異操作可有助於這種擺脫。所謂相互競爭,是指當通過交叉已形成所期望的積木塊時,變異操作有可能破壞這些積木塊。如何有效地配合使用交叉和變異操作,是目前遺傳演算法的一個重要研究內容。
基本變異運算元是指對群體中的個體碼串隨機挑選一個或多個基因座並對這些基因座的基因值做變動(以變異概率P.做變動),(0,1)二值碼串中的基本變異操作如下:
基因位下方標有*號的基因發生變異。
變異率的選取一般受種群大小、染色體長度等因素的影響,通常選取很小的值,一般取0.001-0.1。 當最優個體的適應度達到給定的閾值,或者最優個體的適應度和群體適應度不再上升時,或者迭代次數達到預設的代數時,演算法終止。預設的代數一般設置為100-500代。
⑧ 什麼是遺傳演算法
遺傳演算法(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),可以作為問題近似最優解。
⑨ 請教遺傳演算法中解碼的問題
應該說所有的遺傳演算法都得編碼、解碼,遺傳演算法是模擬生物遺傳和進化過程,交叉是遺傳演算法的核心操作。交叉過程就是二進制數據之間的運算操作,例如;與,或,異或……編碼目的是實現從表現型到基因型的映射,便於遺傳操作;然後通過適應度函數選擇合適下一代,依次迭代,直到達到合適子代。此時所求的子代還是二進制,因此必須再通過解碼將子代映射到表現型。