摘要:Matlab語(yǔ)言是一種簡(jiǎn)單、高效、功能極強的高級語(yǔ)言,在科學(xué)與工程計算領(lǐng)域中有著(zhù)其他語(yǔ)言無(wú)法比擬的優(yōu)勢。遺傳算法是計算機科學(xué)和進(jìn)化論相結合的產(chǎn)物,在多變量?jì)?yōu)化問(wèn)題方面,具有很多優(yōu)點(diǎn)。我們創(chuàng )新性地采用遺傳算法對進(jìn)行生烴動(dòng)力學(xué)模型公式中多個(gè)參數進(jìn)行標定。在使用MATLAB編程實(shí)現的過(guò)程中,我們有針對性地、創(chuàng )造性地設計了編碼方案、求解方案,并且將遺傳算法和傳統的數值優(yōu)化方法結合起來(lái),大大提高了計算的精度。
本文針對新疆某油田的試驗數據,采用遺傳算法對動(dòng)力學(xué)參數進(jìn)行標定,并且把計算結果與采用傳統優(yōu)化方法得到的結果進(jìn)行對比,擬和誤差明顯提高。
關(guān)鍵詞:農遺傳算法;Matlab; 絕對誤差;擬合誤差
中圖分類(lèi)號: T18 文獻標識碼: A文章編號:20080611060
一、引言
含油氣盆地烴源巖油氣生產(chǎn)是一個(gè)非常復雜的地質(zhì)地球化學(xué)過(guò)程,目前在實(shí)際的工作中,使用有機質(zhì)成烴動(dòng)力學(xué)是定量評價(jià)烴源巖生烴潛力的動(dòng)力學(xué)法,就是在確定成烴動(dòng)力學(xué)模型、標定相關(guān)成烴動(dòng)力學(xué)參數后,再結合研究區的構造史和熱史資料,計算出研究區不同層位的源巖在不同地質(zhì)時(shí)代、不同埋深條件下的有機質(zhì)降解成烴率(轉化率),從而估算出各層的生油量。
目前,人們對成烴熱解模型以及其動(dòng)力學(xué)進(jìn)行了深入的研究,提出了多種動(dòng)力學(xué)模型,而標定相關(guān)成烴動(dòng)力學(xué)模型的參數愈加受到人們的重視,因為成烴動(dòng)力學(xué)模型有多個(gè)平行的線(xiàn)性變化和非線(xiàn)性變化的參數,采用不同的參數標定優(yōu)化方法,就會(huì )產(chǎn)生不同的結果,而它的標定直接影響了公式的準確性。
二、需要標定的烴動(dòng)力學(xué)模型
設干酪根(KEO)成油過(guò)程由一系列(NO個(gè))平行一級反應組成,第i個(gè)反應對應的活化能為EOi,指前因子AOi,
并設對應每一個(gè)反應的干酪根的原始潛量為:XOi0,i=1,2…NO,
反映至t時(shí)刻,第i個(gè)反應的生油量為XOi。
這里以有機質(zhì)成油模型的標定為例來(lái)說(shuō)明;設在某一升溫速率l,達到某一溫度j時(shí)由試驗所測到的生油率為XOlij,在相同的條件下,假定EOi、AOi、XOi0之后,計算的產(chǎn)油率為XOij。如果存在某一組EOi、AOi、XOi0的取值使對所有的l、j都有:
XOlij-XOij=0。
則該組EOi、AOi、XOi0即為所求。由于實(shí)驗誤差等原因,只能求使XOlij-XOij盡量小的EOi、AOi、XOi0的取值。為此,構造目標函數
(2-1)
這里L(fēng)0為不同升溫速率試驗的數目,J0為從一條試驗曲線(xiàn)上的采樣點(diǎn)數。
由于EOi可通過(guò)確定平行反應的活化能的分布范圍和相鄰平行反應的活化能間隔而求解,則式2-1可化為:
(2-2)
另外,式2-2中的AOi、XOi0(用占可反應量的百分數表示)應滿(mǎn)足:
(2-3)
三、遺傳算法簡(jiǎn)介
Bagley在1967年關(guān)于自適應下棋程序的論文中,首次提出了遺傳算法這一術(shù)語(yǔ)。同年,DeJong完成了他的博士論文“遺傳自適應系統的行為分析”,將Holland的模式理論與他的計算試驗結合起來(lái),進(jìn)一步完善了選擇、交叉和變異操作,提出了一些新的遺傳操作技術(shù)。遺傳算法流程如下:
begin
t=0;
初始化;
評估;
while 不滿(mǎn)足終止條件 do
begin
重組獲得;
評估;
從和中選擇;
t=t+1
end
end
其中和分別代表第t代的雙親和后代,重組包括:交叉和變異;評估為進(jìn)化操作,包括:選擇。
四、MATLAB編程基本思路
本文根據所考慮問(wèn)題的特點(diǎn),針對具體問(wèn)題,創(chuàng )造性地設計了一種對于參數標定非常有效的、具有個(gè)性的遺傳算法。其主要思路是:考慮到如果固定指前因子Aoi(i=1,2,…No),則目標函數(2-2)是待求的生油潛量XOi0 (i=1,2,…No)的二次函數,而約束條件(2-3)均為線(xiàn)性約束,因此,僅對指前因子Aoi(i=1,2,…No)應用遺傳算法進(jìn)行求解。對于給定的指前因子Aoi(i=1,2,…No),則通過(guò)普通的數值優(yōu)化方法求解一個(gè)線(xiàn)性約束的二次規劃問(wèn)題得到生油潛量XOi0 (i=1,2,…No),即:通過(guò)遺傳算法求解非線(xiàn)性參數Aoi(i=1,2,…No),在計算Aoi(i=1,2,…No)所對應的編碼的適應性函數時(shí),應用普通的數值優(yōu)化方法求解線(xiàn)性參數XOi0 (i=1,2,…No),并計算擬合誤差,將遺傳算法和傳統的數值計算方法很好地結合起來(lái),發(fā)揮各自的優(yōu)點(diǎn)。
(一)編碼方案
為了克服二進(jìn)制編碼的缺點(diǎn),對于問(wèn)題的變量是實(shí)向量的情況,我們直接采用實(shí)數編碼。采用實(shí)數編碼也便于引入與問(wèn)題領(lǐng)域相關(guān)的啟發(fā)信息以增加遺傳算法的搜索能力。
我們只對指前因子進(jìn)行編碼。假設指前因子的個(gè)數是No,則染色體的長(cháng)度就數No,染色體的第i個(gè)基因對應于第i個(gè)指前因子Aoi(i=1,2,…No)
(二)產(chǎn)生初始種群
具體操作為:
for i=1:PopSize
for j=1:No
r=15+rand*3;
Pop(i,j)=10^r;
end
end
其中,PopSize為種群的規模,No為指前因子的個(gè)數,也是染色體的長(cháng)度,
(三)適應度函數的計算
定義個(gè)體AO=(AO1,AO2,…AONo)的適應值為
f。
個(gè)體的AO=(AO1,AO2,…AONo)的適應值越大,說(shuō)明參數標定準確性越高,反之,說(shuō)明,誤差越大。
(四)選擇操作
具體操作過(guò)程如下:
NewPop(1,:)=Pop(min_i,:);
for i=2:PopSize
r=rand;
for j=1:PopSize
if r<=Rules(j)
NewPop(i,:)=Pop(j,:);
break;
end
end
end
(五)交叉操作
在這里我們采用兩點(diǎn)交叉,交叉點(diǎn)隨機選擇。
具體操作步驟為:
CrossP=0.8;
i=1;
while i<PopSize
r=rand;
if (r j1=round(rand*(No-1))+1; j2=round(rand*(No-1))+1; if (j1>j2) j=j1;j1=j2;j2=j; end tempX=NewPop(i,j1:j2); NewPop(i,j1:j2)=NewPop(i+1,j1:j2); NewPop(i+1,j1:j2)=tempX; end i=i+2; end 4-6變異操作 變異的操作步驟: MuteP=0.5; for i=1:PopSize r=rand; if (r<MuteP) j=round(rand*(No-1))+1; r=rand; if (r>0.5& NewPop(i,j)<1e+18) NewPop(i,j)=NewPop(i,j)*2; end if (r<0.5& NewPop(i,j)>1e+15) NewPop(i,j)=NewPop(i,j)/2; end end end 說(shuō)明: (1)依次指定個(gè)體編碼串中的每個(gè)基因座為變異點(diǎn)。 (2)對每一個(gè)變異點(diǎn),隨機產(chǎn)生一個(gè)0~1之間的小數r,根據變異概率R4,對原有基因進(jìn)行乘以2或除以2的變異操作,形成新的基因個(gè)體。 五、計算結果和分析 采用標準遺傳算法對實(shí)驗數據進(jìn)行參數標定。 表5.1是采用遺傳算法對試驗數據進(jìn)行參數標定的結果。圖5.1是迭代過(guò)程中每一代中最優(yōu)個(gè)體的擬合誤差隨著(zhù)代數變化的曲線(xiàn)。 表5.1 標準遺傳算法計算結果 Table 5.1 the result of standard GA 圖5.1各代最優(yōu)個(gè)體擬和誤差變化曲線(xiàn) Figure5.1fitting error of the best individual in every generation 最優(yōu)代數:BestG =87絕對誤差:MinErr =0.00156697 六、結論 通過(guò)使用遺傳算法確定生烴動(dòng)力學(xué)參數的過(guò)程,我們得到以下結論: (一)MATLAB語(yǔ)言自帶的遺傳優(yōu)化函數顯著(zhù)降低了編程實(shí)現的工作量。 (二)遺傳算法求解相對于傳統方法絕對誤差和效率明顯提高。 遺傳算法最大絕對誤差:0.00156697 傳統方法最大絕對誤差:0.0456 綜上所述,MATLAB在烴動(dòng)力學(xué)參數標定中的應用,極大的提高和改進(jìn)了傳統優(yōu)化方法的效率和準確性。 參考文獻 [1] B P TISSOT等. 郝石生等譯. 石油形成與分布[M]. 北京:石油工業(yè)出版社,1982. [2] 盧雙舫. 有機質(zhì)成烴動(dòng)力學(xué)理論及其應用[M]. 北京:石油工業(yè)出版社, 1996. [3] 玄光男. 程潤偉. 遺傳算法與工程優(yōu)化[M]. 北京:清華大學(xué)出版社, 2004. [4] 飛思科技產(chǎn)品研發(fā)中心.MATLAB6.5輔助優(yōu)化計算與設計[M]. 北京:電子工業(yè)出版社,2003. [5]周明.孫樹(shù)棟. 遺傳算法原理及應用[M].北京:國防工業(yè)出版社,1999. [6] 田盛豐. 人工智能原理與應用[M]. 北京:北京理工大學(xué)出版社,1995.