基于改进模拟退火算法的剩余静校正及程序实现
- 格式:pdf
- 大小:965.45 KB
- 文档页数:5
一种改进的模拟退火算法在TSP问题中的研究与应用的开题报告一、研究背景和意义TSP是指从一个起点出发,经过给定的若干个城市,再回到起点的一条路线问题。
TSP是一个非常典型的组合优化问题,因其问题规模巨大,NP难度使得其求解具有很高的实用价值和理论研究价值。
而模拟退火算法作为其中一种智能求解方法,已被广泛运用于TSP问题的求解中。
然而,传统的模拟退火算法存在着如下问题:容易陷入局部最优解、收敛速度慢等。
因此,一种改进的模拟退火算法的研究显得尤为重要。
本文旨在对一种改进的模拟退火算法在TSP问题中的研究与应用进行深入探讨,以提高模拟退火算法在TSP问题中的求解效率和性能。
二、研究内容和目标1. 对TSP问题的基本概念进行分析和阐释;2. 对模拟退火算法的理论模型进行深入研究;3. 对改进的模拟退火算法的思路进行探讨;4. 对改进的模拟退火算法进行实现;5. 对所提出的改进算法进行性能测试和比较分析;6. 讨论算法的优缺点、存在的问题以及未来改进方向。
三、研究方法和技术路线1. 系统阅读相关文献和专业书籍,对TSP问题和模拟退火算法的基本概念和理论进行深入学习和了解;2. 提出算法改进思路,设计算法流程和实现方法;3. 将算法应用于TSP问题中,对算法进行优化和调试;4. 针对所提出的算法进行性能测试和对比分析;5. 总结、讨论和展望研究结果。
四、预期成果和创新点1. 提出一种改进的模拟退火算法,在TSP问题中具有较高的求解效率;2. 对问题进行有效的解决,提高了模拟退火算法在TSP问题中的实用性和实用价值;3. 对算法的理论和实现方法进行了深入探讨,对问题的研究和跟进提供了思路和借鉴;4. 提出的算法解决了传统模拟退火算法容易陷入局部最优解和收敛速度缓慢的问题,具有一定的创新性。
五、研究过程及计划第一年:1. 系统学习TSP问题和模拟退火算法的基本概念和理论;2. 对模拟退火算法的现有研究进行调研,找出其不足之处;3. 提出改进算法的思路,初步设计算法流程和实现方法;4. 对改进的算法进行实现;5. 进行初步的性能测试和分析。
152数据库技术Database Technology电子技术与软件工程Electronic Technology & Software Engineering近年来,在计划经济时期的制造企业生产过程中,仍然是采用人为管控的方式进行生产调度的安排,但是人为的调度难免会受到个人主观情绪的影响,也无形中加剧了调度的偏差,影响其可靠性,再加上缺乏理论依据,往往会造成调度的时效性不够理想,针对这一问题,虚拟机调度应运而生。
借助云计算这一先进的计算理念展开,云计算调度算法会为虚拟机调度分配的多目标优化。
提供更多解决的思路,更能够打破传统人工手动调度存在的弊端。
其中,基于云计算的负载均衡,更能够实现资源开销的合理分配,避免过多请求集中在一些硬件节点上所导致的网络拥堵或性能下降[1]。
1 模拟退火算法相关概述1.1 算法来源模拟退火算法是由N.Metropolis 学者在1953年所提出的。
直到1983年一些学者将模拟退火的核心思想加以优化和改良,并将其于较为复杂组合优化问题里加以利用,收到了很好的效果。
至此其得到了越来越多学者关注,在应用上开始逐渐丰富起来,并引起其他国家关注,也开始扩展到更多的行业领域应用中。
1.2 Metropolis接受准则该准则核心思想正是模拟退火算法,其以固体物质于退火过程里表现出的特点为依据。
物理层面固体退火当中,会大致分为三个物理过程。
首先是物质升温,当物质吸收了越来越多的热能之后,其内部粒子能量随之攀升,粒子运动加速,当热能蓄积到极限后,这些粒子运动摆脱了原本彼此间达成的平衡限制,固体便会改变形态,有固体进入液体形态[2]。
其次,等温过程。
物质不再吸热而是不断放热,当温度和环境温度持平时,物质和环境不发生热交换,物质温度稳定在一定范围之内。
内部粒子自由会有所降低。
当降低到足够稳定的状态不再发生改变时,便处在了平衡状态。
第三是冷却过程。
当固体温度持续降低最后到一定程度后,地球内部粒子数量会不断降低,也可能会逐渐影响其全部运动时的效果,而一直到所有其他粒子全部运动趋于稳定时,而此时外部环境能量也处在最低状态,不能持续给予地球内部粒子以热能,这会导致所有粒子达到了平衡状态。
基于模拟退火的粒子群改进算法的研究与应用的开题报告一、选题的背景和意义随着计算机技术的发展,优化算法在很多领域中得到广泛的应用。
模拟退火算法和粒子群优化算法是比较经典的优化算法,在各自擅长的领域内有很好的应用效果。
但是两者都存在优化效率低和易陷入局部最优等问题。
为了解决这些问题,很多学者提出了多种改进算法,其中基于模拟退火的粒子群改进算法是一种较为常见的算法。
这种算法综合了两种算法的优点,可以在优化效率和精度上取得比较好的结果,因此在各个领域都有广泛的应用。
二、研究的内容和研究的方法本文将会对基于模拟退火的粒子群改进算法进行研究和探讨。
主要研究内容包括基于模拟退火的粒子群优化算法的原理分析、算法流程设计、参数的设置和实现。
同时,本文将会通过实验来验证所提出的算法的有效性,并比较其与模拟退火算法和粒子群优化算法在优化效率和精度上的差异。
研究方法主要采用文献综述和实验。
三、预期研究结果和意义预期的研究结果包括基于模拟退火的粒子群改进算法的原创性成果和优化性能的实验结果。
同时,本文还将探讨所提出的算法在实际问题中的应用前景。
研究成果对于优化算法的研究和应用具有一定的参考价值,并有望为相关领域的学者提供一定的帮助。
四、预期的研究难点和解决方法预期的研究难点主要包括如何充分利用模拟退火和粒子群优化算法的优点,并结合两者的特点,设计出一种高效的改进算法。
解决方法主要包括理论分析和实验方法,通过理论的分析获取改进算法的关键点,然后通过实验来验证算法的有效性和性能。
五、论文的章节安排第一章绪论1.1 研究背景和意义1.2 国内外研究现状1.3 论文的主要内容和章节安排第二章模拟退火算法和粒子群优化算法2.1 模拟退火算法2.2 粒子群优化算法2.3 算法的优缺点比较第三章基于模拟退火的粒子群改进算法3.1 算法的原理分析3.2 算法流程设计3.3 参数的设置3.4 实现方法第四章实验设计和结果分析4.1 实验设计4.2 实验结果分析4.3 结果比较和讨论第五章应用前景和结论5.1 应用前景5.2 结论和展望六、参考文献。
改进的模拟退火算法及其收敛性研究
赵晶;王晓丽
【期刊名称】《山东轻工业学院学报(自然科学版)》
【年(卷),期】2006(020)003
【摘要】高维连续函数的全局优化问题广泛存在于计算生物学、计算化学等诸多领域.针对这类问题,本文给出了一类改进的模拟退火算法,将局部极小化过程引入模拟退火算法.并采用一种简单的方法证明了该算法以概率1收敛于全局最优解.【总页数】3页(P91-93)
【作者】赵晶;王晓丽
【作者单位】山东轻工业学院,数理学院,山东,济南,250100;山东轻工业学院,数理学院,山东,济南,250100
【正文语种】中文
【中图分类】O22
【相关文献】
1.模拟退火算法收敛性的研究 [J], 冯玉蓉;朱均燕
2.一种基于改进模拟退火算法的TSP问题的应用研究 [J], 齐安智
3.基于OWA算子改进模拟退火算法的路线规划研究 [J], 赵人行;郭旭萌;霍俊生;赵景林
4.基于OWA算子改进模拟退火算法的路线规划研究 [J], 赵人行;郭旭萌;霍俊生;赵景林
5.基于改进模拟退火算法的黑启动网架重构策略研究 [J], 马骏毅;李桐歌;周杨;黄永红;岳帅;孙海翔
因版权原因,仅展示原文概要,查看原文内容请购买。
一种改进的模拟退火算法一、概述模拟退火算法(Simulated Annealing, SA)是一种受物理退火过程启发而设计的全局优化算法,用于在给定搜索空间内寻找目标函数的全局最优解。
自其概念在1953年由Metropolis等人提出以来,模拟退火算法已广泛应用于组合优化、机器学习、神经网络等多个领域。
标准的模拟退火算法在实际应用中仍存在收敛速度慢、易陷入局部最优等问题。
对模拟退火算法进行改进以提高其性能具有重要的研究价值。
本文提出了一种改进的模拟退火算法,通过优化退火策略、改进邻域搜索方式以及引入启发式信息等方式,旨在提高算法的全局搜索能力和收敛速度。
该算法在保持模拟退火算法基本框架的基础上,针对其存在的问题进行了有针对性的改进,以期在解决复杂优化问题时表现出更好的性能。
本文首先简要介绍了模拟退火算法的基本原理和流程,然后详细阐述了所提改进算法的具体实现方法,并通过实验验证了其有效性。
对改进算法的性能进行了分析和讨论,探讨了其在实际应用中的潜力和限制。
1. 模拟退火算法的基本原理和应用场景模拟退火算法(Simulated Annealing,SA)是一种启发式随机搜索算法,它源于固体退火过程的物理原理。
在固体退火过程中,物质从高温开始,随着温度逐渐降低,分子运动减缓,物质达到最稳定的状态,即能量最低的状态。
模拟退火算法借鉴了这一过程,通过模拟温度下降和分子热运动,寻找问题的全局最优解。
模拟退火算法的基本原理是在搜索过程中引入随机性,以避免陷入局部最优解。
算法从一个初始解开始,通过在当前解的邻域内随机生成新解,并根据一定的接受准则来判断是否接受新解。
接受准则通常与当前温度、新解与当前解的差异以及一个随机数有关。
随着温度的逐渐降低,接受较差解的概率逐渐减小,算法逐渐趋向于寻找全局最优解。
模拟退火算法适用于解决许多优化问题,特别是那些具有大量局部最优解的问题。
它在函数优化、组合优化、机器学习、神经网络训练等领域都有广泛的应用。
2008,44(7)1前言在数字全息重构中,目前的主要方法有:(1)基于Fresnel变换的衍射重构法;(2)基于Fourier变换的滤波方法;(3)基于Fresnelets的复波恢复方法。
这些方法的主要任务是实现复波的恢复。
在恢复过程中,必须解决两个主要问题,即零级项的抑制和相位解缠绕。
为了解决这些问题,E.Cuche等人采取多种方法抑制零级项[1-4],特别是在2003年~2004年间,E.Cuche等人在生物细胞样本的显微中,利用CCD记录的数字全息图,采用方法3的Fresnel小波变换法[5,6],避开零级项,对数字全息图进了多分辨率的复波恢复,在文献[7]中利用独立变量分析方法(IndependentComponentAnalysis,ICA)进行了零级项消除,获得了较为理想的效果。
然而,在获得共轭复波后,相位解缠绕成为新的问题。
在该问题研究中,文献[8-10]提出了多种方法,并取得了进展。
本文在这些研究成果基础上,实现了一种改进的相位恢复(相位解缠绕)方法,并以镜面反射纯相位复波的数字全息图为例,获得了相位恢复结果。
结果表明,该方法能有效恢复复波相位。
2改进的模拟退火算法模拟退火算法提出于20世纪80年代初,其思想源于固体退火过程,将固体加温至充分高,再让其逐渐冷却。
加温时固体内部粒子随温度上升变为无序状,内能增大,而逐渐冷却时粒子排列逐渐趋于有序,最后在常温时达到基态,内能减为最小。
用固体退火过程模拟组合优化问题,将内能模拟为目标函数,组合优化问题对应金属物体,解对应状态,最优解对应能量最低的状态,温度T演化成控制参数t。
根据波尔兹曼分布,温度达到最低点时,获得最优解的概率最大。
在模拟退火算法中,Metropolis接受准则的引入使算法呈现跳跃性,从而降低了对初始解的依赖性。
传统的模拟退火算法为:步骤1初始化冷却进度表[t=t0(初始温度),Lk(Markov链长),a(温度衰减因子),s(停止准则)],初始解xi=x0;步骤2若在该温度下内循环次数达到Lk,则转到步骤3;否则,确定选用的邻域结构,从该邻域中随机产生新解xj,计算!fij=f(xj)-f(xi),若!fi,j≤0,则令xi=xj;否则,当exp(-!fij/t)>random(0,1),令xi=xj;重复步骤2;步骤3若满足停止准则s,则终止计算;否则tk=atk-1;转到步骤2;步骤4输出最优解。
模拟退火法最后程序与结果程序function y=accept(t,df)%当t值很小时df/t是Nan不确定数值不能转换成%逻辑值会出错;所以不能直接用Metropolic准则; %if df<0% y=1;%else% y=exp(-df/t);%endy=(df<0|(df/t<88)&exp(-df/t)>rand(1,1));function [r,df]=calculate(R,C,N)%随机选择变换法;judge=rand(1,1);if judge<0.5%变换法一逆转u-v及其间的访问顺序;r=exchange2(R);df=costsum(r,C,N)-costsum(R,C,N)else%变换法二将u-v间的路径插到w之后;r=exchange3(R);df=costsum(r,C,N)-costsum(R,C,N);end%当前x圈下的路径长度;function y=costsum(x,C,N)y=0;for i=1:(N-1)y=y+C(x(i),x(i+1));endy=y+C(x(N),x(1));function r=exchange2(R)N=length(R);%fix向零取整;%unifrnd(a,b,m,n)产生(a,b)间的m*n矩阵;%当m,n省略时个数由a和b的个数决定;u=1+fix(N*rand(1,1));v=1+fix(N*rand(1,1));%由于算法中明确要求u<v故从新生成;while u==vu=1+fix(N*rand(1,1));v=1+fix(N*rand(1,1));endtemp=max(u,v);u=min(u,v);v=temp;if u~=1r(1:u-1)=R(1:u-1);for k=u:vr(k)=R(u+v-k);endr(v+1:N)=R(v+1:N);elsefor k=1:vr(k)=R(v+1-k);endr(v+1:N)=R(v+1:N);endif sum(find(r==0))~0disp('error constate!!');endfunction r=exchange3(R)N=length(R);%fix向零取整;%unifrnd(a,b,m,n)产生(a,b)间的m*n矩阵; %当m,n省略时个数由a和b的个数决定; u=1+fix(N*rand(1,1));v=1+fix(N*rand(1,1));w=1+fix(N*rand(1,1));s=[u,v,w];s=sortrows(s');u=s(1);v=s(2);w=s(3);while w==vu=1+fix(N*rand(1,1));v=1+fix(N*rand(1,1));w=1+fix(N*rand(1,1));s=[u,v,w];s=sortrows(s');u=s(1);v=s(2);w=s(3);end%此句是为了解决上述问题%当出现1 1 2时v=[]的情形; if u~=1r(1:u-1)=R(1:u-1);r(u:u+w-v-1)=R(v+1:w);r(u+w-v:w)=R(u:v);r(w+1:N)=R(w+1:N);elser(1:w-v)=R(v+1:w);r(w-v+1:w)=R(1:v);r(w+1:N)=R(w+1:N); endif sum(find(r==0))~0disp('error constate!!!'); end%%运行程序%计算距离.mclear allclcticadress={'1北京';'2上海';'3天津';'4重庆';'5哈尔滨';'6长春';'7沈阳';'8呼和浩特';'9石家庄';'10太原';'11济南';'12郑州';'13西安';'14兰州';'15银川';'16西宁';'17乌鲁木齐';'18合肥';'19南京';'20杭州';'21长沙';'22南昌';'23武汉';'24成都';'25贵阳';'26福州';'27广州';'28海口';'29南宁';'30昆明';'31拉萨';'32香港';'33澳门';'34台北'};%经纬度,第一列是东经E,第二列是北纬N EN=[116.28,39.54;121.29,31.14;117.11,39.09;106.32,29.32;126.41,45.45;125.19,43.52;123.24,41.5;111.48,40.49;114.28,38.02;112.34,37.52;117,36.38;113.42,34.48;108.54,34.16;103.49,36.03;106.16,38.2;101.45,36.38;87.36,43.48;117.18,31.51;118.5,32.02;120.09,30.14;113,28.11;115.52,28.41;114.21,30.37;104.05,30.39;106.42,26.35;119.18,26.05;113.15,23.08;110.2,20.02;108.2,22.48;102.41,25;90.08,29.39;114.1,22.18;113.35,22.14;121.31,25.03];%换算成弧度数ENNew(:,1)=(floor(EN(:,1))+(EN(:,1)-floor(EN(:,1)))/60)*pi/180;ENNew(:,2)=(floor(EN(:,2))+(EN(:,2)-floor(EN(:,2)))/60)*pi/180;%计算任意两点的距离,使用公式$2*6378.137*\arcsin\sqrt{sin^2(a)+cos(Lat2)*cos(Lat2)*sin^2(b/2)}$%Lat1 Lung1 表示A点经纬度,Lat2 Lung2 表示B点经纬度;%a=Lat1 –Lat2 为两点纬度之差b=Lung1 -Lung2 为两点经度之差;%Lat1 Lung1 表示A点经纬度,Lat2 Lung2 表示B点经纬度;SizeEN=size(EN,1);Dis=zeros(SizeEN,SizeEN);for i=1:SizeENfor j=1:SizeENWeiDuCha=ENNew(i,2)-ENNew(j,2);JingDuCha=ENNew(i,1)-ENNew(j,1);Dis(i,j)=2*6378.137*asin(sqrt(sin(WeiDuCha/2)^2+sin(JingDuCha/2)^2*cos(ENNew(i,2))*cos(E NNew(j,2))));endendcost=Dis;cost=;%cost改变时修改下面两处cost处;%N为节点个数;%L每次迭代次数;%s停止准则1,2;s<0.4时较好;???????%t为初始温度0.5-2;%dt为衰减因子0.9以上;%C带权矩阵;%R初始路径,hamilton图;n=length(cost);R0=[1:n];R=Simutation(n,20,0.4,1.6,0.9,cost,R0)function [C,d]=Optmiset(w)n=length(w);C=[1:n,1];C1=C;d=0;for v=4:n+1for i=1:v-3for j=i+2:v-1if(w(C(i),C(j))+w(C(i+1),C(j+1))<w(C(i),C(i+1))+w(C(j),C(j+1)))C1(1:i)=C(1:i);for k=i+1:jC1(k)=C(j+i+1-k);endC1(j+1:n)=C(j+1:n);endendendendC=C1;for i=1:n-1d=d+w(C(i),C(i+1));end%function R=Simutation(N,L,s,t,dt,C,R)%N为节点个数;%L每次迭代次数;%s停止准则1,2;%t为初始温度0.5-2;%dt为衰减因子0.9以上;%C带权矩阵;%R初始路径,hamilton图;function R=Simutation(N,L,s,t,dt,C,R)s0=0;j=0;while j<500a=0;for k=1:L[r,df]=calculate(R,C,N);if accept(t,df)R=r;a=1;disp(costsum(R,C,N));endendt=t*dt;if a==0s0=s0+1;elses0=0;endif s0==sbreak;endj=j+1;end结果一、1.5360e+004R =Columns 1 through 2112 10 8 9 1 3 5 6 7 11 19 18 2 20 34 26 22 23 21 27 32Columns 22 through 3433 28 29 25 4 24 30 31 17 16 14 15 13 Elapsed time is 12.539952 seconds.二、1.5605e+004R =Columns 1 through 2128 29 25 4 24 30 31 17 16 14 15 85 6 7 3 1 11 9 10 13Columns 22 through 3412 23 18 19 2 20 34 26 22 21 27 32 33 Elapsed time is 13.210217 seconds.三、1.5429e+004R =Columns 1 through 2124 4 25 29 28 33 27 32 26 34 20 2 19 18 22 21 23 12 11 7 6Columns 22 through 345 3 1 9 10 8 15 13 14 16 17 31 30 Elapsed time is 14.220053 seconds.四、1.5551e+004R =Columns 1 through 2115 14 16 17 31 30 24 4 25 29 28 33 27 32 26 34 2 20 22 21 23Columns 22 through 3418 19 11 7 6 5 3 1 9 8 10 12 13 Elapsed time is 13.960813 seconds.五、1.5360e+004R =Columns 1 through 2114 16 17 31 30 24 4 25 29 28 33 32 2721 23 22 26 34 20 2 18Columns 22 through 3419 11 7 6 5 3 1 9 8 10 12 13 15 Elapsed time is 13.640876 seconds.六、1.5750e+004R =Columns 1 through 216 5 3 1 9 8 10 12 23 22 21 4 24 13 15 14 16 17 31 30 25Columns 22 through 3429 28 33 27 32 26 34 20 2 18 19 11 7 Eapsed time is 13.966966 seconds.七、1.5750e+004R =Columns 1 through 216 7 11 19 18 2 20 34 26 32 27 33 28 29 25 30 31 17 16 14 15Columns 22 through 3413 24 4 21 22 23 12 10 8 9 1 3 5 Elapsed time is 13.617483 seconds八、1.5802e+004R =Columns 1 through 2113 24 4 25 21 22 23 18 19 2 20 34 26 32 27 33 28 29 30 31 17Columns 22 through 3416 14 15 8 1 3 5 6 7 11 9 10 12 Elapsed time is 14.132703 seconds九、1.5486e+004R =Columns 1 through 2115 8 10 9 1 3 5 6 7 11 12 13 24 4 21 22 23 18 19 2 20Columns 22 through 3434 26 32 27 33 28 29 25 30 31 17 16 14 Elapsed time is 14.461922 seconds十、1.5560e+004R =Columns 1 through 2124 4 25 29 28 33 32 27 21 22 26 34 20 2 19 18 23 12 11 1 3Columns 22 through 347 6 5 8 9 10 13 15 14 16 17 31 30 Elapsed time is 13.613297 seconds.十一、1.5384e+004R =Columns 1 through 2111 7 6 5 3 1 9 8 10 12 13 15 14 16 17 31 30 24 4 25 29Columns 22 through 3428 33 27 32 34 26 22 21 23 18 20 2 19 Elapsed time is 13.680443 seconds.十二、1.5409e+004R =Columns 1 through 2111 12 23 21 22 18 19 2 20 34 26 32 27 33 28 29 25 4 24 30 31Columns 22 through 3417 16 14 15 13 10 8 9 1 3 5 6 7 Elapsed time is 13.637537 seconds.十三、1.5750e+004R =Columns 1 through 2129 28 33 27 32 26 34 20 2 18 19 11 7 6 5 3 1 9 8 10 12Columns 22 through 3423 22 21 4 24 13 15 14 16 17 31 30 25 Elapsed time is 13.566006 seconds.十四、1.5750e+004R =Columns 1 through 2123 22 21 4 24 13 15 14 16 17 31 30 25 29 28 33 27 32 26 34 20Columns 22 through 342 18 19 11 7 6 53 1 9 8 10 12 Elapsed time is 14.163304 seconds.十五、1.6117e+004R =Columns 1 through 2118 19 2 20 34 26 22 21 27 32 33 28 29 25 30 24 4 13 14 16 31Columns 22 through 3417 15 8 5 6 7 3 1 11 9 10 12 23 Elapsed time is 13.855268 seconds.十六、1.6361e+004R =Columns 1 through 2112 10 15 14 16 31 17 8 9 1 3 5 67 11 19 18 2 20 34 26Columns 22 through 3422 23 21 27 32 33 28 29 25 30 24 4 13 Elapsed time is 13.833655 seconds.十七、 1.5725e+004R =Columns 1 through 2122 23 12 13 24 4 25 30 31 17 16 14 15 8 10 9 1 3 5 6 7Columns 22 through 3411 19 18 2 20 34 26 32 27 33 28 29 21 Elapsed time is 13.647803 seconds.十八、1.5486e+004R =Columns 1 through 2122 23 18 19 2 20 34 26 32 27 33 28 29 25 30 31 17 16 14 15 8Columns 22 through 3410 9 1 3 5 6 7 11 12 13 24 4 21 Elapsed time is 13.549049 seconds.十九、1.5463e+004R =Columns 1 through 216 5 3 1 9 10 8 15 13 14 16 17 31 30 24 4 25 29 28 33 32Columns 22 through 3427 21 23 22 26 34 20 2 19 18 12 11 7 Elapsed time is 14.020715 seconds.二十、1.5409e+004R =Columns 1 through 2130 24 4 25 29 28 33 27 32 26 34 20 2 19 18 22 21 23 12 11 7Columns 22 through 346 5 3 1 9 8 10 13 15 14 16 17 31 Elapsed time is 14.333630 seconds.。
第34卷第4期物 探 与 化 探Vo.l34,N o.4 2010年8月GEOPHY SI CA L&GEOCHE M ICAL EX PLORAT I ON Aug.,2010 基于改进模拟退火算法的剩余静校正及程序实现潘 文 勇(中国地质大学软件学院,北京 100083)摘要:模拟退火算法是以固体退火过程为物理背景的全局优化算法,能很好地解决剩余静较正中的非线性问题和 周期跳跃现象,但也存在迭代次数大、收敛速度慢和费时等缺点。
针对以上缺点,提出了改进方案:设计了新的退火策略对温度的衰减进行控制,以减少迭代次数和加快收敛速度;采用时窗内采样点的振幅差之和作为目标函数,以加快计算速度;通过在低温时对模型扰动进行约束,加快最优解的求取。
通过对模拟数据和新疆某地区的实际地震资料进行剩余静校正处理,表明改进模拟退火的剩余静校正不但收敛快、效率高,而且能有效提高叠加剖面的分辨率和信噪比。
关键词:剩余静校正;模拟退火;温度控制;反演中图分类号:P631.4 文献标识码:A 文章编号:1000-8918(2010)04-0528-04在常规地震资料处理流程中,剩余静校正主要是对静校正量进行精细调整,增强同相轴的连续性,提高分辨率和信噪比[1-2]。
一般情况下,剩余静校正量较小,可采用线性方法来求解,然而在山地等复杂地形条件下,地表地质结构非常复杂,地震资料经高程静校正处理后仍存很大剩余静校正量。
在这种情况下,线性方法求解剩余静校正容易陷入局部极值,出现 周期跳跃现象,剩余静校正问题成为一个非线性的、多参数、多极值的全局优化问题[3]。
模拟退火算法(si m ulated annea li n g algorith m)的思想最早由M etropo lis在1953年提出[4],K ir kpatrick 在1983年成功地将其应用在组合最优化问题中[5], M etr opo lis接受准则使算法能跳离局部最优[6-7]。
1985年Rothm an首次将模拟退火法引入到地球物理方法中,并成功解决了大剩余静校正问题中的 周期跳跃现象[8]。
但是,由于计算量大和存在的多余计算,使该方法迭代次数大,收敛速度慢。
为了解决上述问题,笔者在传统模拟退火算法的基础之上,主要做了改进,对改进的模拟退火剩余静校正进行了程序实现,编写了 模拟退火剩余静校正软件,并对模拟数据和新疆某地区的实际地震资料进行了剩余静校正处理,以有效提高叠加剖面的分辨率和信噪比。
1 模拟退火算法原理模拟退火算法以固体退火过程的物理性质为背景,是对局部搜索算法的扩展,是一个全局优化算法。
其核心思想是根据优化问题的求解与物体退火过程的相似性,采用M etropo lis准则和温度控制函数控制温度的下降过程来实现退火,从而得到全局目标函数最优值。
由于固体退火必须慢慢降温,才能使固体在每一温度下都达到热平衡,最终趋于能量最小的基态,同样控制参数的值也必须缓慢衰减,才能确保模拟退火算法最终趋于组合优化问题的整体最优解,一般使用T new=KT作为温度的衰减函数,K为衰减系数。
新模型是否接受,一般使用M etropolis准则,设系统当前状态为i,系统能量为E i,对每一个模型参数施加扰动,产生状态i邻域的状态j,对应的系统能量状态为E j,则E=E j-E i,若 E<0,则接受新状态j,若 E>0,并且概率密度P=exp(- E/T)> ,为[0,1]之间的随机数,则接受新状态j,否则保持原状态i。
2 改进的模拟退火剩余静校正算法模拟退火算法是解决大剩余静校正问题的有效算法,但海量的地震数据,该方法存在迭代次数多、收敛速度慢、费时等缺点。
为了解决上述问题,在传统模拟退火算法的基础上,结合剩余静校正算法,收稿日期:2009-12-075期潘文勇:基于改进模拟退火算法的剩余静校正及程序实现在保证处理效果的前提下,做了以下几点改进:!在迭代的过程中,根据目标函数值对温度进行控制,以减少迭代次数和加快收敛速度;∀采用时窗内采样点的振幅差和代替互相关函数作为目标函数,以加快计算速度;#通过在低温时对模型扰动进行约束,加快最优解的求取。
并且在迭代过程中,增加记忆功能,避免了最优解的遗失。
2.1 初始温度选择与退火策略在模拟退火算法中,温度是一个十分重要的参数,初始温度的选择和温度的控制策略对算法的收敛速度和计算结果都会产生很大的影响。
1983年K irkpatrick[10]提出了确定初始温度T0值的经验法则:首先选取一足够高的初始温度并进行变换,直到使初始接受率大于预定接收率的最小值。
笔者通过计算多次随机变换目标函数平均增量 E来确定T0值[11],即T0∃- E/ln(P start)(1)式中,P start为初始接受概率,为使模拟退火算法减少运算量,一开始就达到准平衡状态,初始接收率P start 应接近于1。
传统模拟退火算法的退火策略通常是设置一衰减系数K对温度进行控制,其取值一般为接近于1的常数,如T=KT0(2)所示。
该方法中温度衰减缓慢并且存在大量冗余计算,造成算法效率低下,因此,笔者提出了一种全新的退火策略,由于每次迭代静校正量都会变化,若静校正量变化较大,应加快温度衰减,若静校正量变化较小,应减缓温度衰减。
因此,可以采用静校正量的变化量与时窗内最大可能静校正量的变化量之间的比值关系,来控制温度的衰减,如T={1-[/(!max )]k}T0,(3)所示。
式中,!max为时窗内最大可能静校正量,为静校正量变化量,k为循环次数。
从式中可看出,当越大或k越小时,温度的衰减系数越小,则温度衰减越快;当越小或k越大时,温度的衰减系数越大,则温度衰减越慢。
该退火策略实现了温度的自动控制,可有效的减少冗余计算和迭代次数,加快收敛速度。
2.2 目标函数的选择传统剩余静校正算法一般取叠加剖面的能量作为目标函数,当能量值最大时,获得的剩余静校正最准确。
叠加剖面能量计算如E s,r=%y%t{%h X yh[t+s i(y,h)+r j(y,h)]]2,(4)所示[12]。
式中,E s,r为叠加剖面能量,s={s i},r= {r j},s i为第i炮的静校正量,r j为第j检波点的静校正量,X yh(t)表示共中心点道集y中,偏移距为h的地震记录。
D isher和N aqu i n(1970年)提出用地震道与模型道的互相关函数代替叠加能量为目标函数,然而无论是采用叠加剖面能量还是互相关函数作为目标函数,都存在计算量大和效率低的缺点。
为了减少计算量和加快处理速度,笔者提出用时窗内相应采样点的振幅差之和作为目标函数。
在给定的时窗内,地震道与模型道相应采样点振幅差的绝对值之和,可以反应地震道信号与模型道信号的相似程度,目标函数值越小,说明该地震道与模型道越相似,当目标函数值为0时,地震道与模型道完全相似。
目标函数公式为z=%N n=1|M k-x n,k|,(5)式中,z为目标函数值,M k为模型道,x n,k为共深度点道集内的记录道,n为道集内的序号,N为覆盖次数,k为时窗内采样点顺序号。
相对于叠加剖面能量函数和互相关函数,该目标函数用加法运算代替了乘法运算,计算简便、效率高,能大大的加快处理速度。
2.3 模型的扰动方式模拟退火算法中模型的扰动即是新模型的产生,并且扰动是由随机函数控制的。
I ngher于1989年提出了快速模拟退火算法(very fast si m ulated an nea ling,简称VFSA),该算法采用了依赖于温度的似柯西(Cauchy)分布产生新模型[13],即m new=m pre+u i(m m ax-m m in),(6)式中,m new为新模型,m pre为当前模型,(m max,m m in)为模型的取值范围,u i=T k sgn( -0.5)[1+ 1/(T[2 -1]k-1)]为扰动因子, 为[0,1]区间上的随机数。
在柯西(Cauchy)分布的基础之上,笔者提出了在低温时对模型扰动进行约束的策略,即通过对扰动因子u i= {1-[/(!m ax )]k}( -0.5)(7)重新设置,在低温时缩小搜索范围,以加速最优解得求取。
3 模拟试验为了验证改进算法的有效性,笔者模拟了理想的地震记录(图1a),模拟数据的CDP道集的道数为50,单道地震数据采样点数为250,采样间隔为2&529&物 探 与 化 探34卷m s ,道间距为25m,模拟子波为y =10/3sin(2∀40t)e -40t,两个波组之间的时间间隔为60m s 。
并对模拟的地震记录加入[-30m s ,30m s]随机剩余静校正量(图1b)。
笔者分别采用改进前后的模拟退伙静校正方法对加入随机静校正量的地震数据进行处理,并对迭代次数和处理时间进行对比。
图2a 所示为算法改进前剩余静校正处理后的CDP 道集,图2b 所示为算法改进后剩余静校正处理后的CDP道集。
图1 模拟地震记录道集(左)与加入随机静校正量的道集(右)图2 算法改进前剩余静校正处理后道集(左)与改进的模拟退火剩余静校正处理后的道集(右)图3为算法改进前后单道地震记录最优解求取的迭代次数对比图,从图中可以看出改进后的算法迭代次数少,收敛速度快,并且不存在最优解的遗失图3 算法改进前后单道记录最优解求取的迭代次数对比问题。
表1中列举了算法改进前后对不同数目的地震道(分别为50、100、150和300)处理的总迭代次数和处理时间。
从表中可看出,改进后的算法大大地加快了收敛速度,减少了运算时间,提高了效率。
表1 算法改进前后迭代次数与处理时间对比方法道数总迭代次数处理时间/s 改进前的模拟退火剩余静校正503767 2.5981006599 4.813150121789.2423002389116.997改进后的模拟退火剩余静校正502014 1.6251003863 3.2341507314 5.125300135158.2194 软件实现与实例分析在改进的模拟退火剩余静校正算法的基础之上,笔者采用C++语言和QT 图形类库开发了 模拟退火剩余静校正软件 ,并使用该软件对新疆某区的实际地震资料进行了剩余静校正处理。
图4a所示为未做静校正的叠加剖面,由于该地区静校正量大且变化复杂,不作静校正的叠加效果很差。
图4b 所示为模拟退火剩余静校正后的叠加剖面,信噪比和分辨率明显提高,采用传统模拟退火剩余静校正进行处理,单个C M P 道集的迭代次数为8326&530&5期潘文勇:基于改进模拟退火算法的剩余静校正及程序实现次,耗时6.003s 。
根据先验信息可知最大可能的剩余静校正量为!max =∋40m s,采用改进的模拟退火剩余静校正进行处理,单个C M P 道集的迭代次数减少到4114次,耗时较少到2.9891s ,即可得到图7所示的叠加效果。