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开启地震深度学习科研之路