當前位置:編程學習大全網 - 源碼下載 - 輔助指標公式源代碼

輔助指標公式源代碼

遺傳算法,也叫遺傳算法(GA),也是壹種啟發式蒙特卡羅優化算法。遺傳算法最早由Holland(1975)提出,模擬了優勝劣汰、適者生存的進化過程,具有不依賴於初始模型的選擇、不易陷入局部極小、反演過程中不需要計算偏導數矩陣等優點。遺傳算法最早由Stoffa和Sen(1991)用於地震波的壹維反演,隨後廣泛應用於地球物理數據的非線性反演。GA算法對模型種群進行跟蹤搜索,即通過模型種群傳遞模型狀態,比模擬退火法有更大更復雜的“記憶”,潛力更大。

遺傳算法在反演中的基本思想和過程如下:

(1)如果把生物體看成壹個模型,把模型參數看成染色體,那麽模型參數有多少,染色體就有多少。每個模型的參數(染色體)都是二進制編碼的,這個編碼就是基因。

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

(3)通過壹代又壹代的繁衍和優勝劣汰的進化過程,剩下的種群基本上都是最優秀的基因,種群趨於壹致。所謂群體“壹致性”是指群體目標函數的方差或標準差很小,或者群體目標函數的平均值接近極值(可能是最大值也可能是最小值),從而獲得非線性反演問題對應的最優解或近似最優解。

下面舉個例子來簡單描述壹下遺傳算法的基本過程。

【例1】設m為正整數,0≤m≤127,求方程φ(m)=m2的最大值。

這個例子極其簡單,只有壹個模型參數,所以只有壹條染色體,目標函數的極值就是最大值(這個例子來自阮白耀的課件)。遺傳算法是通過以下七個步驟實現的:

(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不是整數,那麽對C取整後,基因長度n為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

轉換成二進制數:000001111101。所以ρ(1)=133的二進制基因編碼是:000001111。

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

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

註:基因編碼不直接將電阻率值變為二進制。另外,133的值並沒有出現在基因中,因為分辨率是2,所以表示為最接近的132。

對於【例1】的問題,分辨率為1,0~127需要7位進行二進制編碼。

(2)生成初始模型群體。

生物的繁殖和進化需要壹定數量的生物種群,所以遺傳算法在開始時需要壹定數量的初始模型。為了保證基因的多樣性,隨機產生大量初始模型作為初始種群,並按照上述編碼方法進行編碼。個體應該均勻分布在模型空間中,最好模型空間的每個代表區域都有成員。初始模型組較大,有利於搜索,但過大會增加計算量。

為了保證算法的收斂性,在初始模型種群中,有時要加入全零和全零的成員。遺傳算法就是基於這個初始種群模型進行繁殖和進化求解的。

對於問題【例1】,模型空間是0~127個數字,所以初始種群最多有128個個體。為簡單起見,隨機選擇四個個體作為初始群體。初始群體的編碼和目標函數值見表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,11,120。選擇的基因交換位點見表8.2。下劃線的是要交換的基因位置。

(5)更新。

如何選擇保留壹定數量的母模型和子模型作為新的母模型,就是模型更新。不同的策略會導致不同的結果。壹般來說,如果新壹代機型好,就選擇新壹代機型,淘汰上壹代機型。否則,必須按照壹定的更新概率pu選擇上壹代模型來替換新壹代中的壹些劣質模型。

更新後的後代在繁殖時會被選擇優勝劣汰。對於最大值問題,大於目標函數平均值的後代可以繁殖,小於目標函數平均值的後代不能繁殖。因為新種群中能繁殖的個體數量減少了,所以需要多繁殖幾次來維持種群的平衡。

在【例1】中,後代更好,所以完全淘汰上壹代模型,完全用後代作為新的母本。選擇後代目標函數最大的兩個模型進行育種,分別為111和120。

(6)遺傳變異。

在新配對的母本中,隨機選取模型按壹定比例進行變異。變異操作是模擬自然界的環境因素,即按照相對較小的變異概率pm(即0變成1或1變成0)對壹條或幾條染色體的基因進行變異。

變異操作的作用是對原模型進行壹些改變,從而成為壹個新的個體。這可以增加群體的多樣性。變異操作在遺傳算法中也起著重要作用。實際上,由於搜索空間的性質和初始模型種群的優缺點,遺傳算法在搜索過程中經常出現所謂的“過早收斂”現象,即在進化過程中過早陷入局部解,停止進化。采用合適的變異策略可以提高種群中個體的多樣性,從而防止這種現象,幫助模型跳出局部極值。表8.3顯示了[例1]的遺傳變異和繁殖表。

表8.3基因變異和繁殖表

在【例1】中,分別用111和120進行兩次繁殖,形成四個後代,以維持種群平衡。隨機選擇120進行突變,突變位數也是隨機的。在這裏,它的第二個位置發生突變,即從1變為0,繁殖後形成後代:70,110,121,127。可以看出,新的後代比初始種群好很多,甚至最優解已經出現。對於地球物理最小值問題,我們可以預先設定壹個擬合精度,只要種群中出現壹個具有擬合精度的模型,就可以終止反演。

(7)趨同。

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

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

遺傳算法中的各種概率包括交換概率px、變異概率pm和更新概率pu。這些參數的選擇和設置目前還沒有統壹的理論指導,大多取決於具體問題。Stoffa等人(1991)的研究表明,交換概率適中(px≈0.6)、變異概率小(pm≈0.01)、更新概率大(pu≈0.9)的遺傳算法性能較好。

與模擬退火反演算法類似,與傳統的線性反演方法相比,遺傳算法具有不依賴於初始模型的選擇、找到全局最小值不會陷入局部最小值、反演過程中不需要計算雅可比偏導數矩陣等優點。另外,遺傳算法是並行的,隨著並行計算和集群計算機技術的發展,這種算法將會得到越來越廣泛的研究和應用。

但是,遺傳算法作為壹種類似蒙特卡羅的算法,也需要大量的正向計算。種群中的個體數量越大,繁殖世代越多,計算量就越大。所以和之前的最小二乘法相比,速度並不是它的優勢。

  • 上一篇:Storm,Spark,Flink對比
  • 下一篇:什麽是mvc框架(什麽是Mvc)
  • copyright 2024編程學習大全網