非線性遺傳演算法
『壹』 神經網路遺傳演算法函數極值尋優
對於未知的非線性函數,僅通過函數的輸入輸出數據難以准確尋找函數極值。這類問題可以通過神經網路結合遺傳演算法求解,利用神經網路的非線性擬合能力和遺傳演算法的非線性尋優能力尋找函數極值。本文用神經網路遺傳演算法尋優如下非線性函數極值,函數表達式為
函數圖形如下圖1所示。
從函數方程和圖形可以看出,該函數的全局最小值為0,對應的坐標為(0,0)。雖然從函數方程和圖形中很容易找出函數極值及極值對應坐標,但是在函數方程未知的情況下函數極值及極值對應坐標就很難找到。
神經網路遺傳演算法函數極值尋優主要分為BP神經網路訓練擬合和遺傳演算法極值尋優兩步,演算法流程如下圖2所示。
神經網路訓練擬合根據尋優函數的特點構建合適的BP神經網路,用非線性函數的輸出數據訓練BP網路,訓練後的BP神經網路就可以預測函數輸出。遺傳演算法極值尋優把訓練後的BP神經網路預測結果作為個體適應度值,通過選擇、交叉和變異操作尋找函數的全局最優值及對應輸入值。
本文根據非線性函數有2個輸入參數、1個輸出參數,確定BP神經網路結構為2-5-1.取函數的4 000組輸入輸出數據,從中隨機選取3 900組數據訓練網路,100組數據測試網路性能,網路訓練好後用於預測非線性函數輸出。
遺傳演算法中個體採用實數編碼,由於尋優函數只有2個輸入參數,所以個體長度為2。個體適應度值為BP神經網路預測值,適應度值越小。交叉概率為0.4,變異概率為0.2。
用函數輸入輸出數據訓練BP神經網路,使訓練後的網路能夠擬合非線性函數輸出,保存訓練好的網路用語計算個體適應度值。根據非線性函數方程隨機得到該函數的4 000組輸入輸出數據,存儲於data.mat中,其中input為函數輸入數據,output為函數對應輸出數據,從中隨機抽取3 900組訓練數據訓練網路,100組測試數據測試網路擬合性能。最後保存訓練好的網路。
把訓練好的BP神經網路預測輸出作為個體適應度值。
BP神經網路擬合結果分析
本文中個體的適應度值為BP神經網路預測值,因此BP神經網路預測精度對於最優位置的尋找具有非常重要的意義。由於尋優非線性函數有2個輸入參數、1個輸出參數,所以構建的BP神經網路的結構為2-5-1。共取非線性函數4 000組輸入輸出數據,從中隨機選擇3 900組數據訓練BP神經網路,100組數據作為測試數據測試BP神經網路擬合性能,BP神經網路預測輸出和期望輸出對比如下圖3所示。
從BP神經網路預測結果可以看出,BP神經網路可以准確預測非線性函數輸出,可以把網路預測近似看成函數實際輸出。
遺傳演算法尋優結果分析 BP神經網路訓練結束後,可以利用遺傳演算法尋找該非線性函數的最小值。遺傳演算法的迭代次數是100次,種群規模是20,交叉概率為0.4,變異概率為0.2,採用浮點數編碼,個體長度為21,優化過程中最優個體適應度值變化曲線如下圖4所示。
本文所使用的方法有比較重要的工程應用價值,比如對於某項試驗來說,試驗目的是獲取到最大試驗結果對應的實驗條件,但是由於時間和經費限制,該試驗只能進行有限次,可能單靠試驗結果找不到最優的試驗條件。這時可以在已知試驗數據的基礎上,通過本文介紹的神經網路遺傳演算法尋找最優試驗條件。
思路就是先根據試驗條件數和試驗結果數確定BP神經網路結構;然後把試驗條件作為輸入數據,試驗結果作為輸出數據訓練BP網路,使得訓練後的網路可以預測一定試驗條件下的試驗結果;最後把試驗條件作為遺傳演算法中的種群個體,把網路預測的試驗結果作為個體適應度值,通過遺傳演算法推導最優試驗結果及其對應試驗條件。
『貳』 遺傳演算法
遺傳演算法是從代表問題可能潛在解集的一個種群開始的,而一個種群則由經過基因編碼的一定數目的個體組成。每個個體實際上是染色體帶有特徵的實體。染色體作為遺傳物質的主要載體,即多個基因的集合,其內部表現(即基因型)是某種基因的組合,它決定了個體形狀的外部表現,如黑頭發的特徵是由染色體中控制這一特徵的某種基因組合決定的。因此,在一開始需要實現從表現型到基因型的映射即編碼工作。由於仿照基因編碼的工作很復雜,我們往往進行簡化,如二進制編碼。初始種群產生之後,按照適者生存和優勝劣汰的原理,逐代(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的變化范圍加大。
對於高維地震模型的反演,由於參數太多,相應的模型字元串太長,目前用遺傳演算法作反演的計算成本還嫌太高。實際上,為了加快計算,不僅要改進反演技巧和傳代的控制技術,而且還要大幅度提高正演計算的速度,避免對遺傳演算法大量的計算花費在正演合成上。
『叄』 遺傳演算法有哪些應用
遺傳演算法的搜索策略和優化搜索方法是不依附於梯度信息及其它的輔助知識,而只需要影響搜索方向的目標函數和相應的適應度函數,所以遺傳演算法提供了一種求解復雜系統問題的通用框架,它不依賴於問題的具體領域,對問題的種類有很強的魯棒性,所以廣泛應用於許多科學。遺傳演算法的應用領域有很多,下面針對一些主要的應用領域做簡單的介紹。
1.函數優化:該領域是遺傳演算法得以應用的經典領域,同時它也是遺傳演算法進行性能評價的常用算例,許多人構造出了各種各樣復雜形式的測試函數:連續函數和離散函數、凸函數和凹函數、低維函數和高維函數、單峰函數和多峰函數等。對於函數優化問題,如一些非線性、多模型、多目標等函數問題用遺傳演算法很容易得到較好的結果,而用其他演算法則較難。
2.組合優化:由於組合優化問題的搜索空間在不斷地增大,有時用枚舉法很難得到最優解。對這類復雜的問題,人們已經意識到應把主要精力放在尋求滿意解上,而遺傳演算法是尋求這種滿意解的最佳工具之一。實踐證明,遺傳演算法對於組合優化中的NP問題非常有效。比如,在旅行商問題、裝箱問題及圖形劃分等問題上,已經成功得以應用了遺傳演算法。
『肆』 遺傳演算法1——ga與fmincon求解非線性規劃模型的對比
題目:
一、ga求解模型
[x,fval]=ga(@fitnessfun,nvars,A,b,Aeq,beq,lb,ub,@nonlcon,options)
二、fmincon求解模型
x = fmincon(@fitnessfun,x0,A,b,Aeq,beq,lb,ub,@nonlcon,options)
ga函數中包含nvars(適應度函數的獨立變數個數),而 fmincon 函數 中需要變數初值x0,這是二者的不同之處。
三、結果對比
總之,遺傳演算法適用於求解非標准演算法無法求解的問題,即目標函數不連續、不可微、隨機或高度非線性的問題。 當然, 用 遺傳 演算法去求解相 對簡單的問題 有助於 理解 其具體原理,相對於研究復雜問題,較簡單的問題同樣可以用於學習遺傳演算法。
『伍』 非線性解析反演與遺傳演算法的結合反演方法
周輝
(青島海洋大學海洋地球科學學院,青島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]。
梯度
式(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.
『陸』 求助大神 利用遺傳演算法解決非線性規劃問題,最好有MATLAB代碼
%%%%%%%%%%%
無聊到專門幫你寫了個程序。不想全部寫完,自己補完。PS:這題怎麼看都是線性規劃
&&&&&&&&&&&&&&
%%%%%%%%%%%%%%利用遺傳演算法計算最優化問題%%%%%%%
%遺傳演算法參數設置
popsize=200; %種群個數
generation=500;%種群迭代次數,繁殖後代數
pc=0.4; %兩個體之間交叉概率
pm=0.05; %個體變異的概率
yueshu=0; %約束成立的標志為1
%初始化群體
for i=1:popsize
while(yuesu==0) %當約束成立時,不再變異。約束不成立時變異。
x(i,1)=randint(1,1,[0,35]); %隨機生成(0-35)的整數
x(i,2)=randint(1,1,[0,60]);
x(i,3)=randint(1,1,[0,40]);
x(i,4)=randint(1,1,[0,40]);
x(i,5)=randint(1,1,[0,30]);
x(i,6)=randint(1,1,[0,30]);
x(i,7)=randint(1,1,[0,35]);
x(i,8)=randint(1,1,[0,20]);
%這里自己寫幾行程序就好
if
%這里判斷約束條件,若符合,yueshu=1;
end
end
end
for n=1:generation
%計算適應度
[row col]=size(x);
for i=1:row
fitness(i)=(x(i,1)+x(i,2)+x(i,3)+x(i,5)+x(i,6)+x(i,7)+x(i,8))/20;
end
%輪盤賭選擇
zong=sum(fitness);
xt=x;
for i=1:row
temp=rand(1);
for j=1:row
if temp< fitness(j)/zong
break;
end
end
x(i,:)=xt(j,:);
end
%兩個個體交叉變異
x2=x;
[row col]=size(x);
for i=1:2:row
temp=rand(1);
if temp<pc
%%%%%%%%%%%%%這里還要自己寫個程序判斷是否符合約束,不符合一直交叉,直到交叉到符合約束
point=randint(1,1,[1,8]);
x(i,point:8)=x2(i+1,point:8);
x(i+1,1:point)=x2(i,1:point);
end
end
%單個點變異
x3=x;
[row col]=size(x);
for i=1:row
for j=1:8
temp=rand(1);
if(temp<pm)
yueshu=0;
while(yueshu==0) %當約束成立時,不再變異。約束不成立時變異。
if j==1 x(i,1)=randint(1,1,[0,35]);end
if j==2 x(i,2)=randint(1,1,[0,60]);end
if j==3 x(i,3)=randint(1,1,[0,40]);end
if j==4 x(i,4)=randint(1,1,[0,40]);end
if j==5 x(i,5)=randint(1,1,[0,30]);end
if j==6 x(i,6)=randint(1,1,[0,30]);end
if j==7 x(i,7)=randint(1,1,[0,35]);end
if j==8 x(i,8)=randint(1,1,[0,20]);end
%這里自己寫程序啊
if
%這里判斷約束條件,若符合,yueshu=1;
end
end
end
end
end
end
[row col]=size(x);
for i=1:row
fitness(i)=(x(i,1)+x(i,2)+x(i,3)+x(i,5)+x(i,6)+x(i,7)+x(i,8))/20;
end
maxx=find(fitness==max(fitness));
x(maxx,:)
『柒』 遺傳演算法非線性約束問題
很多時候遺傳演算法並不能給出合理的答案,你可以考慮適當的更改初始種群的大小、迭代次數的上限、函數精度等處理一下!工具箱中的函數往往是通用的,必要的時候你需要自己提供種群初始函數,甚至優勝劣汰、變異等等,建議復雜的優化問題還是交給lingo吧!
『捌』 matlab 非線性多目標的遺傳演算法問題
用matlab的ga()遺傳演算法函數求非線性多目標的最小值(或最大值),其解決幫助如下:
1、首先建立自定義目標函數,y=FitFun(x)
2、其二建立自定義約束函數,[c,ceq]=NonCon(x)
3、最後,根據已知條件,用ga()函數求解。
為了說明問題,沒有用你隨意給的問題。下面,給你一個例子作參考。
FitFun.m
function f = FitFun(x,a1)
f = exp(x(1))*(4*x(1)^2 + 2*x(2)^2 + 4*x(1)*x(2) + 2*x(2) + a1);
end
NonCon.m
function [c,ceq] = NonCon(x,a2)
c = [1.5 + x(1)*x(2) - x(1) - x(2);-x(1)*x(2) - a2];
ceq = [];
end
ga_main.m
a1 = 1; a2 = 10;
options = gaoptimset('MutationFcn',@mutationadaptfeasible);
x = ga(@(x)FitFun(x,a1),2,[],[],[],[],[],[],@(x)NonCon(x,a2),options)
運行結果
『玖』 Matlab中用遺傳演算法求解帶約束的非線性規劃問題
按我的理解x是個6元向量
那麼就沒有問題 在第一個M文件最後加個f=fsum;
直接
ga(@fitnessfun,6,[],[],[],[],[],[],@nonlconstr)
『拾』 遺傳演算法具體應用
1、函數優化
函數優化是遺傳演算法的經典應用領域,也是遺傳演算法進行性能評價的常用算例,許多人構造出了各種各樣復雜形式的測試函數:連續函數和離散函數、凸函數和凹函數、低維函數和高維函數、單峰函數和多峰函數等。
2、組合優化
隨著問題規模的增大,組合優化問題的搜索空間也急劇增大,有時在目前的計算上用枚舉法很難求出最優解。對這類復雜的問題,人們已經意識到應把主要精力放在尋求滿意解上,而遺傳演算法是尋求這種滿意解的最佳工具之一。
此外,GA也在生產調度問題、自動控制、機器人學、圖象處理、人工生命、遺傳編碼和機器學習等方面獲得了廣泛的運用。
3、車間調度
車間調度問題是一個典型的NP-Hard問題,遺傳演算法作為一種經典的智能演算法廣泛用於車間調度中,很多學者都致力於用遺傳演算法解決車間調度問題,現今也取得了十分豐碩的成果。
從最初的傳統車間調度(JSP)問題到柔性作業車間調度問題(FJSP),遺傳演算法都有優異的表現,在很多算例中都得到了最優或近優解。
(10)非線性遺傳演算法擴展閱讀:
遺傳演算法的缺點
1、編碼不規范及編碼存在表示的不準確性。
2、單一的遺傳演算法編碼不能全面地將優化問題的約束表示出來。考慮約束的一個方法就是對不可行解採用閾值,這樣,計算的時間必然增加。
3、遺傳演算法通常的效率比其他傳統的優化方法低。
4、遺傳演算法容易過早收斂。
5、遺傳演算法對演算法的精度、可行度、計算復雜性等方面,還沒有有效的定量分析方法。