遺傳演算法解非線性方程
❶ 如何用maple求高次非線性方程組的近似解
如果maple數值解求解不出來,可能的情況有二。1、方程組矛盾,檢查方程組列寫是否錯誤,如果正確嘗試用最小二乘法求解。2、數值解由於搜索空間太大,沒法找到,嘗試用啟發式演算法,例如遺傳演算法,類似你寫的這些方程,可以用matlab中的遺傳演算法工具箱,應該也寫成最小二乘的形式。
這樣的問題,我沒有遇到過,fsolve命令已經很強大了,如果方程組正確,fsolve求不出來,我就不知道如何處理了。
希望以上對你有幫助。
❷ 100分求高手解決MATLAB用遺傳演算法求有約束條件的非線性方程的最值問題
不知道實際問題,只能說一些了:
1、對ga的調用有幾處錯,正確的應該是
x
=
ga(@(sol)fitness(sol,option),2,[],[],[],[],[],[],[],options);%調用函數,一定是句柄@(x)fun(x)
2、f有錯,其中的變數x沒有定義
3、fitness中option似乎是多餘的。
由於問題不清楚,更多解答lz聯系我
❸ 遺傳演算法解非線性方程組能解准嗎
如果maple數值解求解不出來,可能的情況有二。1、方程組矛盾,檢查方程組列寫是否錯誤,如果正確嘗試用最小二乘法求解。2、數值解由於搜索空間太大,沒法找到,嘗試用啟發式演算法,例如遺傳演算法,類似你寫的這些方程,可以用matlab中的遺傳演算法工具箱,應該也寫成最小二乘的形式。
這樣的問題,我沒有遇到過,fsolve命令已經很強大了,如果方程組正確,fsolve求不出來,我就不知道如何處理了。
希望以上對你有幫助。
❹ 如何將微分方程組轉化為約束條件,進而使用遺傳演算法求解
不用轉化也可以求解的
❺ 求教 如何用matlab解帶約束的非線性方程組
可以用最優化的方法來求解,非線性方程組可以作為等式約束,未知量之間的大小關系可以作為不等式約束
然後用最小二乘方法求最優解 可以查下fmincon 函數!
❻ 怎樣用遺傳演算法解較復雜的非線性方程組啊
問題具體點吧。。你這個問題不具體。。真的無法回答。。
❼ 非線性解析反演與遺傳演算法的結合反演方法
周輝
(青島海洋大學海洋地球科學學院,青島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求解關於帶有不等式約束的非線性方程組問題
你的非線性函數裡面有大量線性的句子。這是錯誤的原因,修改到A,b,lb,ub裡面去。
從目標函數來看,最好用遺傳演算法ga來求
c(1)=17-x(2)
c(4)=2-x(3);
c(6)=100-x(5);
c(7)=x(5)-150;
c(8)=130-x(6);
c(9)=x(6)-200;
c(10)=x(1)+0.5*x(6)+40-x(4);
以上7項,前6項放在lb、ub中,最後1項放到A、b中
作如下變動:
A=[1,0 0 -1 0 .5];
b=-40;
lb=[-2^10,17,2,-2^10,100,130];
ub=[inf,inf,inf,inf,150,200];
Aeq=[];
beq=[];
x0=[230;21;8;420;120;160];
解得:
x =
420.0000
150.0000
2.0000
525.0000
100.0000
130.0000
fval =
-6.6415e+08
exitflag =
4
exitflag=4查的:4 Computed search direction too small.不是很滿意。
是不是你的目標函數或約束條件有問題,我求的的數值也不好,負數!
❾ 用matlab解有限制條件的非線性方程組
使用solve函數。舉個例子,解非線性方程組
x^2+y^3=10
x^3-y^2=1
其中x,y為方程組的未知量
在Matlab的命名窗口中輸入:
syms x y
[x y]=solve('x^2+y=10','x^2-y^2=1','x','y')
即可
輸出計算結果為:
x =
(37^(1/2)/2 + 21/2)^(1/2)
(21/2 - 37^(1/2)/2)^(1/2)
-(21/2 - 1/2*37^(1/2))^(1/2)
-(1/2*37^(1/2) + 21/2)^(1/2)
y =
- 37^(1/2)/2 - 1/2
37^(1/2)/2 - 1/2
37^(1/2)/2 - 1/2
- 37^(1/2)/2 - 1/2
具體solve函數的使用方法,通過輸入help solve來學習。
希望我的回答能夠解決您的問題,謝謝。