本發(fā)明涉及地球物理電法反演領(lǐng)域,特別涉及一種基于加權(quán)多策略蛙跳算法的超高密度電法并行反演方法。
背景技術(shù):
:超高密度電法是在高密度電法基礎(chǔ)上發(fā)展起來的一種勘探方法,它利用多通道陣列電極系測(cè)量系統(tǒng),在地表或井-地布設(shè)陣列電極系,采集任意電極間關(guān)于地下電阻率信息的大量實(shí)測(cè)數(shù)據(jù),并利用先進(jìn)的正反演方法重建精確的電阻率圖像。超高密度電法是一種成本低、采集效率高、信息豐富和解釋精度高的新型勘探方法,能夠滿足對(duì)地質(zhì)體進(jìn)行高精度定位的工程需求。然而,超高密度電法反演是一個(gè)復(fù)雜的非線性函數(shù)尋優(yōu)過程,具有高維和非凸的特性。目前針對(duì)超高密度電法資料處理和解釋的方法多采用2.5維線性或擬線性反演方法,存在著依賴初始模型、易陷入局部極值、偏導(dǎo)數(shù)矩陣求解困難等問題。非線性反演方法能夠較好地解決以上問題,因此利用遺傳算法、粒子群算法和進(jìn)化算法等非線性優(yōu)化算法進(jìn)行非線性反演已經(jīng)成為了對(duì)地質(zhì)資料進(jìn)行高精度解釋的重要途徑。但是,超高密度電法的采集數(shù)據(jù)量大,反演參數(shù)多,模型搜索空間大,采用非線性反演方法的收斂速度慢,計(jì)算效率低。蛙跳算法是一種新型的群體進(jìn)化算法,兼具文化基因算法和粒子群算法的優(yōu)點(diǎn),全局搜索和局部搜索同時(shí)進(jìn)行,收斂快且易于并行實(shí)現(xiàn),是解決非線性反演方法計(jì)算效率問題的一種新的途徑。因此,結(jié)合超高密度電法的特點(diǎn),對(duì)蛙跳算法進(jìn)行改進(jìn),增強(qiáng)算法跳出局部極值的能力,提高反演算法的計(jì)算效率,快速地求解超高密度電法的反問題,獲得高質(zhì)量的解釋結(jié)果,具有重要的理論意義和廣泛的應(yīng)用前景。技術(shù)實(shí)現(xiàn)要素:本發(fā)明提供一種基于加權(quán)多策略蛙跳算法的超高密度電法并行反演方法,該方法通過在局部搜索中加入權(quán)重系數(shù)來增強(qiáng)算法跳出局部極值的能力,通過將最小二乘搜索策略引入到蛙跳算法的局部搜索中來實(shí)現(xiàn)多策略的局部搜索,提高算法的局部收斂速度,最后采用cuda技術(shù)并行計(jì)算各青蛙的適應(yīng)度和各模因組的局部搜索過程,提高算法的總體計(jì)算效率。為實(shí)現(xiàn)上述目標(biāo),本發(fā)明所采用的技術(shù)方案如下:一種基于加權(quán)多策略蛙跳算法的超高密度電法并行反演方法,包括以下步驟:(1)根據(jù)反演的規(guī)模初始化蛙跳算法中青蛙的種群規(guī)模p,模因組個(gè)數(shù)m和組內(nèi)迭代次數(shù)iterl,隨機(jī)初始化蛙群,其中,每只青蛙采用實(shí)數(shù)編碼,值由勘探區(qū)域的模型參數(shù)組成;(2)根據(jù)下式計(jì)算蛙群中各個(gè)青蛙的適應(yīng)度:式中φd為數(shù)據(jù)擬合誤差,φm為正則化項(xiàng),dpre為預(yù)測(cè)數(shù)據(jù)矢量,dobs為觀測(cè)數(shù)據(jù)矢量,λ為正則化系數(shù),c為粗糙度矩陣,m為各青蛙代表的模型參數(shù)矢量;(3)將蛙群內(nèi)青蛙按照個(gè)體適應(yīng)度降序排列,并保存全局適應(yīng)度最優(yōu)的青蛙xg;(4)將整個(gè)蛙群分成m個(gè)模因組,每個(gè)模因組含n只青蛙,滿足關(guān)系p=m×n,具體的分組方式如下式:其中g(shù)i為第i個(gè)模因組,每個(gè)模因組內(nèi)具有最優(yōu)和最差適應(yīng)度的青蛙分別保存為xb和xw;(5)蛙群分組后分別對(duì)各模因組內(nèi)最差青蛙xw進(jìn)行局部搜索,其局部搜索的策略為:式中f為權(quán)重系數(shù),rand為[0,1]間的獨(dú)立隨機(jī)數(shù),t為當(dāng)前迭代次數(shù),a為雅克比矩陣;當(dāng)進(jìn)行局部搜索時(shí),首先采用策略1向模因組內(nèi)最優(yōu)解xb(t)的方向更新青蛙,如果得到的xw(t+1)優(yōu)于xw(t),則取代模因組內(nèi)xw(t),否則采用策略2向全局最優(yōu)解xg(t)的方向更新青蛙,如果得到的xw(t+1)優(yōu)于xw(t),則取代模因組內(nèi)xw(t),否則計(jì)算雅克比矩陣a,并采用策略3向最小二乘解的方向更新青蛙,步驟(5)反復(fù)迭代直至達(dá)到組內(nèi)迭代次數(shù)iterl;(6)當(dāng)各模因組完成局部搜索后,將所有模因組內(nèi)的青蛙進(jìn)行全局混洗,即重新混合排序,并更新全局最優(yōu)青蛙xg;(7)判斷是否滿足算法的終止條件,如果為否,則跳轉(zhuǎn)至步驟(4),如果為是,則跳轉(zhuǎn)至步驟(8);(8)將算法此時(shí)的全局最優(yōu)青蛙xg作為反演結(jié)果輸出。本發(fā)明的方法采用基于cuda技術(shù)的gpu并行計(jì)算實(shí)現(xiàn),其中蛙跳算法的整體反演過程為主函數(shù),在cpu中采用串行計(jì)算的方式實(shí)現(xiàn);各個(gè)青蛙的適應(yīng)度計(jì)算過程(步驟2)和各個(gè)模因組的局部搜索過程(步驟5)計(jì)算量大且具備并行性,因此在gpu中采用并行計(jì)算的方式實(shí)現(xiàn)。通過上述過程,本發(fā)明的方法顯著提高了超高密度電法反演的質(zhì)量和效率,具體表現(xiàn)在:(1)超高密度電法的采集數(shù)據(jù)量大,解空間復(fù)雜,傳統(tǒng)反演方法極易陷入局部極值。采用權(quán)重系數(shù)改進(jìn)蛙跳算法的局部搜索過程,能夠擴(kuò)大xw在進(jìn)化時(shí)的搜索范圍,促使反演算法跳出局部極值,搜索到高質(zhì)量的全局解,得到更準(zhǔn)確的反演結(jié)果;(2)超高密度電法反演的計(jì)算規(guī)模大,收斂緩慢和計(jì)算效率低。通過引入最小二乘搜索策略來優(yōu)化算法的收斂過程。最小二乘搜索是一種高效率的定向搜索,取代蛙跳算法中的隨機(jī)搜索后,能夠提高局部搜索的收斂速度,促使算法快速收斂;(3)利用蛙跳算法的并行特征,采用cuda技術(shù)進(jìn)行g(shù)pu并行加速,能夠高效地進(jìn)行細(xì)粒度并行計(jì)算,使得算法的計(jì)算效率整體顯著提高。附圖說明圖1是本發(fā)明基于加權(quán)多策略蛙跳算法的超高密度電法并行反演方法的流程圖。圖2是本發(fā)明適應(yīng)度計(jì)算的流程圖。圖3是本發(fā)明多策略局部搜索的流程圖。具體實(shí)施方式下面結(jié)合附圖對(duì)本發(fā)明的實(shí)施方式進(jìn)行詳細(xì)闡述,附圖作為本發(fā)明的一部分,表示了本發(fā)明的一種具體實(shí)現(xiàn)。如圖1所示,本發(fā)明提供了一種基于加權(quán)多策略蛙跳算法的超高密度電法并行反演方法,具體包括以下步驟:(1)根據(jù)反演的規(guī)模初始化蛙跳算法中青蛙的維數(shù)d,種群規(guī)模p,模因組個(gè)數(shù)m和組內(nèi)迭代次數(shù)iterl,隨機(jī)初始化蛙群,其中,每只青蛙采用實(shí)數(shù)編碼,值由勘探區(qū)域的模型參數(shù)組成;(2)根據(jù)下式計(jì)算蛙群中各個(gè)青蛙的適應(yīng)度:式中φd為數(shù)據(jù)擬合誤差,φm為正則化項(xiàng),dpre為預(yù)測(cè)數(shù)據(jù)矢量,dobs為觀測(cè)數(shù)據(jù)矢量,λ為正則化系數(shù),c為粗糙度矩陣,m為各青蛙代表的模型參數(shù)矢量;具體的適應(yīng)度計(jì)算過程如圖2所示,首先根據(jù)青蛙的模型參數(shù)矢量m調(diào)用有限體積法正演得到各電極的電位矩陣,然后根據(jù)超高密度電法的電極排列方式計(jì)算預(yù)測(cè)數(shù)據(jù)矢量dpre,并根據(jù)數(shù)據(jù)預(yù)測(cè)矢量dpre和已知的觀測(cè)數(shù)據(jù)矢量dobs計(jì)算數(shù)據(jù)擬合誤差,然后根據(jù)粗糙度矩陣c和模型參數(shù)矢量m計(jì)算正則化項(xiàng),最后根據(jù)數(shù)據(jù)擬合誤差φd和正則化項(xiàng)φm結(jié)合正則化系數(shù)λ計(jì)算青蛙的適應(yīng)度;(3)將蛙群內(nèi)青蛙按照個(gè)體適應(yīng)度降序排列,并保存全局適應(yīng)度最優(yōu)的青蛙xg;(4)將整個(gè)蛙群分成m個(gè)模因組,每個(gè)模因組含n只青蛙,滿足關(guān)系p=m×n,具體的分組方式如下式:其中g(shù)i為第i個(gè)模因組,每個(gè)模因組內(nèi)具有最優(yōu)和最差適應(yīng)度的青蛙分別保存為xb和xw;(5)蛙群分組后分別對(duì)各模因組內(nèi)最差青蛙xw進(jìn)行局部搜索,其局部搜索的策略為:式中f為權(quán)重系數(shù),用于擴(kuò)大xw的搜索空間,增強(qiáng)算法跳出局部極值的能力,rand為[0,1]間的獨(dú)立隨機(jī)數(shù),t為當(dāng)前迭代次數(shù),a為雅克比矩陣;如圖3所示,當(dāng)進(jìn)行模因組內(nèi)局部搜索時(shí),首先采用策略1向模因組內(nèi)最優(yōu)解xb(t)的方向更新青蛙,如果得到的xw(t+1)優(yōu)于xw(t),則取代模因組內(nèi)xw(t),否則采用策略2向全局最優(yōu)解xg(t)的方向更新青蛙,如果得到的xw(t+1)優(yōu)于xw(t),則取代模因組內(nèi)xw(t),否則計(jì)算雅克比矩陣a,并采用策略3向最小二乘解的方向更新青蛙,結(jié)束本次模因組內(nèi)局部搜索;最后判斷是否達(dá)到組內(nèi)局部搜索迭代次數(shù)iterl,如果為否,則繼續(xù)執(zhí)行步驟(5),如果為是,則跳轉(zhuǎn)至步驟(6);(6)當(dāng)各模因組完成局部搜索后,將所有模因組內(nèi)的青蛙進(jìn)行全局混洗,即重新混合排序,并更新全局最優(yōu)青蛙xg;(7)判斷是否滿足算法的終止條件,如果為否,則跳轉(zhuǎn)至步驟(4),如果為是,則跳轉(zhuǎn)至步驟(8);(8)將算法此時(shí)的全局最優(yōu)青蛙xg作為反演結(jié)果輸出。本發(fā)明的方法采用基于cuda技術(shù)的gpu并行計(jì)算實(shí)現(xiàn),其中蛙跳算法的整體反演過程為主函數(shù),在cpu中采用串行計(jì)算的方式實(shí)現(xiàn);各個(gè)青蛙的適應(yīng)度計(jì)算過程(步驟2)和各個(gè)模因組的局部搜索過程(步驟5)計(jì)算量大且具備獨(dú)立并行性,因此在gpu中采用并行計(jì)算的方式實(shí)現(xiàn)。其中g(shù)pu計(jì)算部分已在圖1中標(biāo)出。圖2描述了適應(yīng)度計(jì)算時(shí)的cuda并行線程劃分,其中每個(gè)青蛙啟用一個(gè)獨(dú)立的線程,一共劃分p個(gè)并行線程;圖3描述了多策略局部搜索時(shí)的cuda并行線程劃分,其中每個(gè)模因組啟用一個(gè)獨(dú)立的線程,一共劃分m個(gè)并行線程。本實(shí)施例采用一個(gè)經(jīng)典模型來驗(yàn)證加權(quán)多策略蛙跳算法的反演有效性。所選用的模型包含2個(gè)100ωm的高阻異常體,大小均為2m×4m,異常體位于勘探區(qū)域的中間,頂部埋深分別為1m和5m,背景電阻率為10ωm。超高密度電法的電極個(gè)數(shù)為30,電極距為1m。蛙跳算法的反演參數(shù)為:p=30,m=6,n=5,iterl=10,f=1.3。本實(shí)施例的具體執(zhí)行過程如下:首先放置好電極,設(shè)定電極距,并設(shè)定超高密度電法的電極矩陣,采集觀測(cè)數(shù)據(jù)。然后將觀測(cè)數(shù)據(jù)讀取至計(jì)算機(jī)中。計(jì)算機(jī)開始在cpu中執(zhí)行本發(fā)明提出的加權(quán)多策略蛙跳算法,當(dāng)進(jìn)行適應(yīng)度計(jì)算和局部搜索時(shí),cpu調(diào)用對(duì)應(yīng)的gpu并行計(jì)算模塊來實(shí)現(xiàn)高效計(jì)算。以上適應(yīng)度計(jì)算和局部搜索的并行計(jì)算模塊均可通過調(diào)用或修改gpu廠商提供的cuda函數(shù)庫中已封裝好的函數(shù)實(shí)現(xiàn)。算法反復(fù)迭代直到滿足算法終止條件時(shí),輸出反演結(jié)果。本實(shí)施例中用于反演的計(jì)算環(huán)境如下:cpu為i7-6500u,內(nèi)存為8gb,gpu為gtx960m,操作系統(tǒng)為windows8.1。在上述環(huán)境中,標(biāo)準(zhǔn)蛙跳算法和加權(quán)多策略蛙跳算法的反演性能比較如表1所示:算法名稱反演數(shù)據(jù)誤差計(jì)算時(shí)間(分鐘)并行計(jì)算時(shí)間(分鐘)標(biāo)準(zhǔn)蛙跳算法3.23633105加權(quán)多策略蛙跳算法1.8447549表1表1中采用均方誤差mse(meansquareerror)來衡量反演的數(shù)據(jù)誤差。由表1可知,加權(quán)多策略蛙跳算法的反演數(shù)據(jù)誤差小于標(biāo)準(zhǔn)蛙跳算法,這是因?yàn)闄?quán)重系數(shù)f的加入,提高了加權(quán)多策略蛙跳算法模因組內(nèi)最差青蛙xw的搜索范圍,增強(qiáng)了算法跳出局部極值的能力。同時(shí)加權(quán)多策略蛙跳算法的計(jì)算時(shí)間小于標(biāo)準(zhǔn)蛙跳算法的計(jì)算時(shí)間,說明最小二乘策略的加入提高了算法的收斂速度。最后,對(duì)于兩種蛙跳算法,采用并行計(jì)算后的計(jì)算時(shí)間均遠(yuǎn)小于未采用并行計(jì)算的計(jì)算時(shí)間,尤其是加權(quán)多策略蛙跳算法,采用并行計(jì)算優(yōu)化后僅耗時(shí)49分鐘,說明本發(fā)明的cuda并行計(jì)算方法顯著提高了反演過程的計(jì)算效率,具有很好的加速效果。以上所述僅為本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本
技術(shù)領(lǐng)域:
的技術(shù)人員,在不脫離本發(fā)明原理的前提下,可對(duì)上述技術(shù)內(nèi)容做出若干修改或修飾,但凡未脫離本發(fā)明技術(shù)方案的內(nèi)容,依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對(duì)以上實(shí)施方式所做的任何簡(jiǎn)單修改或修飾,均仍屬于本發(fā)明的保護(hù)范圍。當(dāng)前第1頁12