python實現蟻群演算法
⑴ TSP解決之道——蟻群演算法
蟻群演算法java實現以及TSP問題蟻群演算法求解
蟻群演算法原理與應用講解
蟻群演算法原理與應用1 -自然計算與群體智能
1、蟻群演算法(Ant Clony Optimization,ACO)是一種群智能演算法,它是由一群無智能或有輕微智能的個體(Agent)通過相互協作而表現出智能行為,從而為求解復雜問題提供了一個新的可能性。
2、是一種仿生學的演算法,是由自然界中螞蟻覓食的行為而啟發。(artificial ants;雙橋實驗)
3、運作機理:當一定路徑上通過的螞蟻越來越多時,其留下的信息素軌跡也越來越多,後來螞蟻選擇該路徑的概率也越高,從而更增加了該路徑的信息素強度,而強度大的信息素會吸引更多的螞蟻,從而形成一種正反饋機制。
4、蟻群演算法歐化過程中的兩個重要原則:
a、螞蟻在眾多路徑中轉移路線的選擇規則。
b、全局化信息素更新規則。信息素更新的實質就是人工螞蟻根據真實螞蟻在訪問過的邊上留下的信息素和蒸發的信息素來模擬真實信息素數量的變化,從而使得越好的解得到越多的增強。這就形成了一種自催化強化學習(Autocatalytic Reinforcement Learning)的正反饋機制。
1、描述:螞蟻數量m;城市之間的信息素矩陣pheromone;每次迭代的m個螞蟻的最短路徑 BestLength;最佳路徑BestTour。 每隻螞蟻都有 :禁忌表(Tabu)存儲已訪問過的城市,允許訪問的城市表(Allowed)存儲還可以訪問的城市,矩陣( Delta )來存儲它在一個循環(或者迭代)中給所經過的路徑釋放的信息素。
2、 狀態轉移概率 :在搜索過程中,螞蟻根據各條路徑上的信息量及路徑的啟發信息來計算狀態轉移概率。在t時刻螞蟻k由元素(城市)i轉移到元素(城市)j的狀態轉移概率:
τij (t) :時刻路徑(i, j)上的信息量。ηij=1/dij :啟發函數。
α為信息啟發式因子 ,表示軌跡的相對重要性,反映了螞蟻在運動過程中積累的信息在螞蟻運動時所起的作用,其值越大,則該螞蟻越傾向於選擇其它螞蟻經過的路徑,螞蟻之間的協作性越強;
β為期望啟發式因子 ,表示能見度的相對重要性,反映螞蟻在運動過程中啟發信息在螞蟻選擇路徑中的受重視程度,其值越大,則該狀態狀態轉移概率越接近於貪心規則;
3、 息素更新規則 :
ρ表示信息素揮發系數;Δτij(t)表示本次循環中路徑(i, j)上的信息素增量,初始時刻Δτij(t) =0。
4、三種信息增量計算方法:
區別:第一種利用了全局信息,在走一圈後更新。二、三中都利用的是局部信息。通常使用第一種。
5、TSP中流程圖
⑵ 蟻群演算法難學嗎
難學。
一些超級難的演算法有遺傳演算法,蟻群演算法。蟻群演算法基本原理:在自然界中,生物群體所表現出的智能得到越來越多的關注,許多的群智能優化演算法都是通過對群體智能的模擬而實現的。其中模擬螞蟻群體覓食的蟻群演算法成為一種主要的群智能演算法。演算法原理:在自然界中,對於覓食的螞蟻群體,其可以在任何和沒有提示的情況下找到食物和巢穴之間的最短路徑。並且能夠根據和環境的變遷,自適應地找到新的最優路徑。根據生物學家研究,螞蟻群體這一行為的根本原因是:螞蟻在尋找食物的過程中,能在其走過的路徑上釋放一種特殊的物質信息素,隨著時間的推移,這種信息素會逐漸地揮發,而對於後來的螞蟻,選擇某條路徑的概率與該路徑上信息素的濃度成正比。當某一條路徑上通過的螞蟻越多的時候,這條路徑上的信息素的濃度就會累積越大,後來的螞蟻選擇此路徑的概率也就越大。路徑上螞蟻越多,導致信息素濃度越高,從而會吸引更多的螞蟻,從而形成一種正反饋機制,通過這種機制,最終蟻群可以發現最短路徑。
⑶ 蟻群演算法求解TSP問題的源程序及簡要說明
簡單蟻群演算法求解TSP的源程序(我幫你找的)
蟻群演算法是新興的仿生演算法,最初是由義大利學者Dorigo M於1991年首次提出,由於具有較強的魯棒性,優良的分布式計算機制和易於與其它方法結合等優點,成為人工智慧領域的一個研究熱點。本程序是實現簡單的蟻群演算法,TSP問題取的是att48,可從http://www.iwr.uni-heidelberg.de/groups/comopt/software/TSPLIB95獲取,程序運行時間可能會比較長,在我的這台CPU 1.6G+內存256M的機器上運行時間大概是13分鍾左右。我用的語言是MATLAB 7.1。此程序僅供學習所用,如有問題請反饋。謝謝。(註:程序沒有計算最後一個城市回來起點城市的距離)
function [y,val]=QACS
tic
load att48 att48;
MAXIT=300; % 最大循環次數
NC=48; % 城市個數
tao=ones(48,48);% 初始時刻各邊上的信息最為1
rho=0.2; % 揮發系數
alpha=1;
beta=2;
Q=100;
mant=20; % 螞蟻數量
iter=0; % 記錄迭代次數
for i=1:NC % 計算各城市間的距離
for j=1:NC
distance(i,j)=sqrt((att48(i,2)-att48(j,2))^2+(att48(i,3)-att48(j,3))^2);
end
end
bestroute=zeros(1,48); % 用來記錄最優路徑
routelength=inf; % 用來記錄當前找到的最優路徑長度
% for i=1:mant % 確定各螞蟻初始的位置
% end
for ite=1:MAXIT
for ka=1:mant %考查第K只螞蟻
deltatao=zeros(48,48); % 第K只螞蟻移動前各邊上的信息增量為零
[routek,lengthk]=travel(distance,tao,alpha,beta);
if lengthk<routelength % 找到一條更好的路徑
routelength=lengthk;
bestroute=routek;
end
for i=1:NC-1 % 第K只螞蟻在路徑上釋放的信息量
deltatao(routek(i),routek(i+1))=deltatao(routek(i),routek(i+1))+Q/lengthk;
end
deltatao(routek(48),1)=deltatao(routek(48),1)+Q/lengthk;
end
for i=1:NC-1
for j=i+1:NC
if deltatao(i,j)==0
deltatao(i,j)=deltatao(j,i);
end
end
end
tao=(1-rho).*tao+deltatao;
end
y=bestroute;
val=routelength;
toc
function [y,val]=travel(distance,tao,alpha,beta) % 某隻螞蟻找到的某條路徑
[m,n]=size(distance);
p=fix(m*rand)+1;
val=0; % 初始路徑長度設為 0
tabuk=[p]; % 假設該螞蟻都是從第 p 個城市出發的
for i=1:m-1
np=tabuk(length(tabuk)); % 螞蟻當前所在的城市號
p_sum=0;
for j=1:m
if isin(j,tabuk)
continue;
else
ada=1/distance(np,j);
p_sum=p_sum+tao(np,j)^alpha*ada^beta;
end
end
cp=zeros(1,m); % 轉移概率
for j=1:m
if isin(j,tabuk)
continue;
else
ada=1/distance(np,j);
cp(j)=tao(np,j)^alpha*ada^beta/p_sum;
end
end
NextCity=pchoice(cp);
tabuk=[tabuk,NextCity];
val=val+distance(np,NextCity);
end
y=tabuk;
function y=isin(x,A) % 判斷數 x 是否在向量 A 中,如在返回 1 ,否則返回 0
y=0;
for i=1:length(A)
if A(i)==x
y=1;
break;
end
end
function y=pchoice(A)
a=rand;
tempA=zeros(1,length(A)+1);
for i=1:length(A)
tempA(i+1)=tempA(i)+A(i);
end
for i=2:length(tempA)
if a<=tempA(i)
y=i-1;
break;
end
end
⑷ 蟻群演算法中轉移概率是怎麼用的.不同的螞蟻為什麼會選擇不同的路徑
因為不同路徑的信息素和啟發信息不同,所以向每條路徑轉移的概率也不同。
具體實現可以運用輪盤賭選擇,轉移概率越大的路徑就會有更多的螞蟻選擇。
⑸ 蟻群演算法的概念,最好能舉例說明一些蟻群演算法適用於哪些問題!
概念:蟻群演算法(ant colony optimization,ACO),又稱螞蟻演算法,是一種用來在圖中尋找優化路徑的機率型演算法.它由Marco Dorigo於1992年在他的博士論文中提出,其靈感來源於螞蟻在尋找食物過程中發現路徑的行為.蟻群演算法是一種模擬進化演算法,初步的研究表明該演算法具有許多優良的性質.針對PID控制器參數優化設計問題,將蟻群演算法設計的結果與遺傳演算法設計的結果進行了比較,數值模擬結果表明,蟻群演算法具有一種新的模擬進化優化方法的有效性和應用價值
其原理:為什麼小小的螞蟻能夠找到食物?他們具有智能么?設想,如果我們要為螞蟻設計一個人工智慧的程序,那麼這個程序要多麼復雜呢?首先,你要讓螞蟻能夠避開障礙物,就必須根據適當的地形給它編進指令讓他們能夠巧妙的避開障礙物,其次,要讓螞蟻找到食物,就需要讓他們遍歷空間上的所有點;再次,如果要讓螞蟻找到最短的路徑,那麼需要計算所有可能的路徑並且比較它們的大小,而且更重要的是,你要小心翼翼的編程,因為程序的錯誤也許會讓你前功盡棄.這是多麼不可思議的程序!太復雜了,恐怕沒人能夠完成這樣繁瑣冗餘的程序
應用范圍:螞蟻觀察到的范圍是一個方格世界,螞蟻有一個參數為速度半徑(一般是3),那麼它能觀察到的范圍就是3*3個方格世界,並且能移動的距離也在這個范圍之內
引申:跟著螞蟻的蹤跡,你找到了什麼?通過上面的原理敘述和實際操作,我們不難發現螞蟻之所以具有智能行為,完全歸功於它的簡單行為規則,而這些規則綜合起來具有下面兩個方面的特點:1、多樣性 2、正反饋 多樣性保證了螞蟻在覓食的時候不置走進死胡同而無限循環,正反饋機制則保證了相對優良的信息能夠被保存下來.我們可以把多樣性看成是一種創造能力,而正反饋是一種學習強化能力.正反饋的力量也可以比喻成權威的意見,而多樣性是打破權威體現的創造性,正是這兩點小心翼翼的巧妙結合才使得智能行為涌現出來了.引申來講,大自然的進化,社會的進步、人類的創新實際上都離不開這兩樣東西,多樣性保證了系統的創新能力,正反饋保證了優良特性能夠得到強化,兩者要恰到好處的結合.如果多樣性過剩,也就是系統過於活躍,這相當於螞蟻會過多的隨機運動,它就會陷入混沌狀態;而相反,多樣性不夠,正反饋機制過強,那麼系統就好比一潭死水.這在蟻群中來講就表現為,螞蟻的行為過於僵硬,當環境變化了,螞蟻群仍然不能適當的調整.既然復雜性、智能行為是根據底層規則涌現的,既然底層規則具有多樣性和正反饋特點,那麼也許你會問這些規則是哪裡來的?多樣性和正反饋又是哪裡來的?我本人的意見:規則來源於大自然的進化.而大自然的進化根據剛才講的也體現為多樣性和正反饋的巧妙結合.而這樣的巧妙結合又是為什麼呢?為什麼在你眼前呈現的世界是如此栩栩如生呢?答案在於環境造就了這一切,之所以你看到栩栩如生的世界,是因為那些不能夠適應環境的多樣性與正反饋的結合都已經死掉了,被環境淘汰了!蟻群演算法的實現 下面的程序開始運行之後,螞蟻們開始從窩里出動了,尋找食物;他們會順著屏幕爬滿整個畫面,直到找到食物再返回窩.其中,『F』點表示食物,『H』表示窩,白色塊表示障礙物,『+』就是螞蟻了.
⑹ 哪本python書立有蟻群演算法
簡介
蟻群演算法(ant colony optimization, ACO),又稱螞蟻演算法,是一種用來在圖中尋找優化路徑的機率型演算法。它由Marco Dorigo於1992年在他的博士論文中提出,其靈感來源於螞蟻在尋找食物過程中發現路徑的行為。蟻群演算法是一種模擬進化演算法,初步的研究表明該演算法具有許多優良的性質。針對PID控制器參數優化設計問題,將蟻群演算法設計的結果與遺傳演算法設計的結果進行了比較,數值模擬結果表明,蟻群演算法具有一種新的模擬進化優化方法的有效性和應用價值。
定義
各個螞蟻在沒有事先告訴他們食物在什麼地方的前提下開始尋找食物。當一隻找到食物以後,它會向環境釋放一種揮發性分泌物pheromone (稱為信息素,該物質隨著時間的推移會逐漸揮發消失,信息素濃度的大小表徵路徑的遠近)來實現的,吸引其他的螞蟻過來,這樣越來越多的螞蟻會找到食物。有些螞蟻並沒有像其它螞蟻一樣總重復同樣的路,他們會另闢蹊徑,如果另開辟的道路比原來的其他道路更短,那麼,漸漸地,更多的螞蟻被吸引到這條較短的路上來。最後,經過一段時間運行,可能會出現一條最短的路徑被大多數螞蟻重復著。
解決的問題
三維地形中,給出起點和重點,找到其最優路徑。
程序代碼:
numpy as npimport matplotlib.pyplot as plt%pylabcoordinates = np.array([[565.0,575.0],[25.0,185.0],[345.0,750.0],[945.0,685.0],[845.0,655.0],[880.0,660.0],[25.0,230.0],[525.0,1000.0],[580.0,1175.0],[650.0,1130.0],[1605.0,620.0],[1220.0,580.0],[1465.0,200.0],[1530.0, 5.0],[845.0,680.0],[725.0,370.0],[145.0,665.0],[415.0,635.0],[510.0,875.0],[560.0,365.0],[300.0,465.0],[520.0,585.0],[480.0,415.0],[835.0,625.0],[975.0,580.0],[1215.0,245.0],[1320.0,315.0],[1250.0,400.0],[660.0,180.0],[410.0,250.0],[420.0,555.0],[575.0,665.0],[1150.0,1160.0],[700.0,580.0],[685.0,595.0],[685.0,610.0],[770.0,610.0],[795.0,645.0],[720.0,635.0],[760.0,650.0],[475.0,960.0],[95.0,260.0],[875.0,920.0],[700.0,500.0],[555.0,815.0],[830.0,485.0],[1170.0, 65.0],[830.0,610.0],[605.0,625.0],[595.0,360.0],[1340.0,725.0],[1740.0,245.0]])def getdistmat(coordinates):num = coordinates.shape[0]distmat = np.zeros((52,52))for i in range(num):for j in range(i,num):distmat[i][j] = distmat[j][i]=np.linalg.norm(coordinates[i]-coordinates[j])return distmatdistmat = getdistmat(coordinates)numant = 40 #螞蟻個數numcity = coordinates.shape[0] #城市個數alpha = 1 #信息素重要程度因子beta = 5 #啟發函數重要程度因子rho = 0.1 #信息素的揮發速度Q = 1iter = 0itermax = 250etatable = 1.0/(distmat+np.diag([1e10]*numcity)) #啟發函數矩陣,表示螞蟻從城市i轉移到矩陣j的期望程度pheromonetable = np.ones((numcity,numcity)) # 信息素矩陣pathtable = np.zeros((numant,numcity)).astype(int) #路徑記錄表distmat = getdistmat(coordinates) #城市的距離矩陣lengthaver = np.zeros(itermax) #各代路徑的平均長度lengthbest = np.zeros(itermax) #各代及其之前遇到的最佳路徑長度pathbest = np.zeros((itermax,numcity)) # 各代及其之前遇到的最佳路徑長度while iter < itermax:# 隨機產生各個螞蟻的起點城市if numant <= numcity:#城市數比螞蟻數多pathtable[:,0] = np.random.permutation(range(0,numcity))[:numant]else: #螞蟻數比城市數多,需要補足pathtable[:numcity,0] = np.random.permutation(range(0,numcity))[:]pathtable[numcity:,0] = np.random.permutation(range(0,numcity))[:numant-numcity]length = np.zeros(numant) #計算各個螞蟻的路徑距離for i in range(numant):visiting = pathtable[i,0] # 當前所在的城市#visited = set() #已訪問過的城市,防止重復#visited.add(visiting) #增加元素unvisited = set(range(numcity))#未訪問的城市unvisited.remove(visiting) #刪除元素for j in range(1,numcity):#循環numcity-1次,訪問剩餘的numcity-1個城市#每次用輪盤法選擇下一個要訪問的城市listunvisited = list(unvisited)probtrans = np.zeros(len(listunvisited))for k in range(len(listunvisited)):probtrans[k] = np.power(pheromonetable[visiting][listunvisited[k]],alpha)*np.power(etatable[visiting][listunvisited[k]],alpha)cumsumprobtrans = (probtrans/sum(probtrans)).cumsum()cumsumprobtrans -= np.random.rand()k = listunvisited[find(cumsumprobtrans>0)[0]] #下一個要訪問的城市pathtable[i,j] = kunvisited.remove(k)#visited.add(k)length[i] += distmat[visiting][k]visiting = klength[i] += distmat[visiting][pathtable[i,0]] #螞蟻的路徑距離包括最後一個城市和第一個城市的距離#print length# 包含所有螞蟻的一個迭代結束後,統計本次迭代的若干統計參數lengthaver[iter] = length.mean()if iter == 0:lengthbest[iter] = length.min()pathbest[iter] = pathtable[length.argmin()].()else:if length.min() > lengthbest[iter-1]:lengthbest[iter] = lengthbest[iter-1]pathbest[iter] = pathbest[iter-1].()else:lengthbest[iter] = length.min()pathbest[iter] = pathtable[length.argmin()].()# 更新信息素changepheromonetable = np.zeros((numcity,numcity))for i in range(numant):for j in range(numcity-1):changepheromonetable[pathtable[i,j]][pathtable[i,j+1]] += Q/distmat[pathtable[i,j]][pathtable[i,j+1]]changepheromonetable[pathtable[i,j+1]][pathtable[i,0]] += Q/distmat[pathtable[i,j+1]][pathtable[i,0]]pheromonetable = (1-rho)*pheromonetable + changepheromonetableiter += 1 #迭代次數指示器+1#觀察程序執行進度,該功能是非必須的if (iter-1)%20==0:print iter-1# 做出平均路徑長度和最優路徑長度fig,axes = plt.subplots(nrows=2,ncols=1,figsize=(12,10))axes[0].plot(lengthaver,'k',marker = u'')axes[0].set_title('Average Length')axes[0].set_xlabel(u'iteration')axes[1].plot(lengthbest,'k',marker = u'')axes[1].set_title('Best Length')axes[1].set_xlabel(u'iteration')fig.savefig('Average_Best.png',dpi=500,bbox_inches='tight')plt.close()#作出找到的最優路徑圖bestpath = pathbest[-1]plt.plot(coordinates[:,0],coordinates[:,1],'r.',marker=u'$cdot$')plt.xlim([-100,2000])plt.ylim([-100,1500])for i in range(numcity-1):#m,n = bestpath[i],bestpath[i+1]print m,nplt.plot([coordinates[m][0],coordinates[n][0]],[coordinates[m][1],coordinates[n][1]],'k')plt.plot([coordinates[bestpath[0]][0],coordinates[n][0]],[coordinates[bestpath[0]][1],coordinates[n][1]],'b')ax=plt.gca()ax.set_title("Best Path")ax.set_xlabel('X axis')ax.set_ylabel('Y_axis')plt.savefig('Best Path.png',dpi=500,bbox_inches='tight')plt.close()⑺ 傳統經典斷層識別實戰(二)——方差體和螞蟻追蹤(附軟體)
地震方差體屬性的基礎是誤差分析,主要通過相鄰道地震信號的相似度屬性描述地質構造資料。其在地震道特徵描述以及儲集層展布等方面已經取得了良好的應用效果。因此,地震方差體屬性可以應用在構造解釋中,由於對構造解釋的精度要求越來越高,基於地震方差體屬性能夠表述出地質構造間不連續的斷層與褶皺關系。
實際地層的裂縫會導致地震數據體中對應位置采樣點與周圍區域的采樣點出現振幅特徵異常,此時通過計算一定范圍區域內的采樣點之間的方差值來凸顯出裂縫點以識別出裂縫。如圖,窗口內有 n 道地震數據,以窗口中間的采樣點為種子點。計算該點方差的具體步驟如下:1)取窗口內上下各一半的采樣點,先求出窗口內 n 道地震數據中每一道所有采樣點的平均振幅值;2)計算每個采樣點與同一時刻 n 道數據中的振幅值和振幅平均值的方差的和;3)乘上加權系數並歸一化獲得該點的方差值。移動窗口,迭代步驟 1、2、3 得到整個工區數據體每一個采樣點的方差值,得到方差體。
由圖可以得到方差體屬性計算公式:
常用的體屬性有相干體、方差體、曲率體屬性。各種體屬性的利用,主要利用其沿地層的層位屬性。每種軟體的各種演算法不一致,同一種屬性結果也不盡相同。由下圖可看出, 使用Geoframe軟體的方差屬性、VVA軟體的方差屬性和相干屬性效果都較好,陷落柱異常反映清楚,無論是較大的,還是較小都有顯示,在地層順層切片上表現為圓形或半圓形圈閉。VVA軟體的曲率屬性效果較差,雖然陷落柱在其上都有顯示,但干擾較大,沒有其他幾種屬性反映得明顯、直觀。
螞蟻體追蹤技術基於蟻群演算法實現對斷裂的追蹤和識別。該演算法原理為模擬螞蟻在食物與巢穴之間根據可吸引螞蟻的信息素濃度尋求最蔽握悄短路徑。在地震數據中,「螞蟻」根據振幅及相位之間的差異,沿著可能的斷層和裂縫移動完成對二者的刻畫。
21世紀初,螞蟻追蹤技術開始廣泛應用於斷裂系統解釋中,目前該技術成功的應用到石油地震資料精細解釋中,並取得了不錯的效果。螞蟻追蹤解釋技術具有快速、直觀、高精度、客觀等優點。為了使小斷層地震屬性識別更明顯,解釋精度更高。採用了在構造導向濾波基礎上,再對數據進行螞蟻追蹤計算,最後根據屬性優選提取敏感屬性。 即通過「螞蟻」+屬性融合(包括「螞蟻」+方差屬性、「螞蟻」+相干屬性、「螞蟻」+朗伯反射屬性、「螞蟻」+傾角屬性、「螞蟻」+瞬時振幅屬性以及「螞蟻」+瞬時頻率屬性),然後優選其中的敏感屬性用於精細構造解釋。
與相干屬性相比(如圖),螞蟻體屬性的優點是凸顯了斷裂線狀構造特徵,去除了與斷裂無關的信息,提高了斷裂解釋 精度。缺點是平面預測結果往往過於雜亂,無規律。原因之一是控制螞蟻追蹤結果的參數太多,調節困難。
螞蟻體追蹤技術是基於疊後地震數據運算的,雖然其精度比相乾等屬性高,但也只適用於對小斷層和大尺度裂縫的預測。可預測裂縫發育的方向,但難以定量化表徵裂縫發育密度。
接下來,我們使用真實的數據來演示方差體和螞蟻追蹤的操作方法。
先講一下選用數據的情況。這次我們用的是1996年紐西蘭塔拉納基盆地疊前數據。這個數據在很多專家的論文中都出現過。數據概貌是這樣的:
數據皮岩的尺寸是:287*735*1252。
接下來,我們使用Petrel這款軟體來進行處理。
1.新建工程和導入數據
選擇New project,然後在Home Folder欄,選擇 new seismic main folder。
在樹形結構seismic右鍵點擊-new seismic survey,這樣就建好了工程。
右鍵點擊Survery 1,選擇Import (on selection),選擇數據體Kerry3D.segy,在彈出的參數框中直接點擊宏渣OK,就載入了數據。
通過新建一個3D的窗口,可以查看數據概貌。
2.方差體
(1)做Realized。
在地震信號右擊選擇Realized…。在對話框中點擊Realize後關閉窗口,這樣就對原始數據進行了簡化,減少了一些細節的信號。
(2)方差體
點擊Realized的數據體,在seismic Interpretation點擊volume attributes(體屬性)進行配置:
結果就是這樣的:
如果覺得干擾較多,還可以對數據體先進行平滑處理,再做方差體。平滑處理是選擇這樣的參數:
最後處理的結果是這樣的:
3.螞蟻追蹤
選擇剛才處理後的方差體數據,在seismic Interpretation點擊volume attributes(體屬性)進行配置:
處理後的結果是這樣的。相比方差體,斷層識別解析度進一步提高。
螞蟻追蹤也可以在不同的數據體結果上處理,大家可以自己多嘗試。
螞蟻追蹤的參數配置方法比較多。
一是在參數配置中,可以選擇主動或被動。一般識別大斷層用被動,小斷層用主動。還可以先做主動,然後再疊加被動。這樣就可以去掉很多無效識別結果。
二是過濾不追蹤的信號。其中的圈代表斷層的方位,dip是傾角,azimuth是方位。塗黑的部分就是不追蹤的斷層,比如最里層代表水平的斷層,一般就不會追蹤。
大家可以根據工區的實際情況,選擇不追蹤的斷層。
比如斷層主要看南北方向的,就把東西方向的塗黑,一般不塗黑外層(因為南北向的傾角較大)。如下圖:
或
以上就是今天的課程。這節課講解了現在比較常用的兩種斷層自動識別的方法,包括了原理和實戰案例操作。如果大家對軟體比較感興趣或遇到什麼問題都可以聯系我交流。再見。
擴展閱讀:
怎樣輕松入門地震勘探研究:先從地震數據處理開始
如何從0開啟地震深度學習科研之路