资源描述:
《matlab智能算法三十个案例分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1、案例背景模拟退火算法(SimulatedAnnealing,简称SA)的思想最早是由Metropolis等提出的。其出发点是基于物理中固体物质的退火过程与一般的组合优化问题之间的相似性。模拟退火法是一种通用的优化算法,其物理退火过程由以下三部分组成:(1)加温过程。其目的是增强粒子的热运动,使其偏离平衡位置。当温度足够高时,固体将熔为液体,从而消除系统原先存在的非均匀状态。(2)等温过程。对于与周围环境交换热量而温度不变的封闭系统,系统状态的自发变化总是朝自由能减少的方向进行的,当自由能达到最小时,系统达到平衡状态。(3)冷却过程。使粒
2、子热运动减弱,系统能量下降,得到晶体结构。其中,加温过程对应算法的设定初温,等温过程对应算法的Metropolis抽样过程,冷却过程对应控制参数的下降。这里能量的变化就是目标函数,我们要得到的最优解就是能量最低态。其中Metropolis准则是SA算法收敛于全局最优解的关键所在,Metropolis准则以一定的概率接受恶化解,这样就使算法跳离局部最优的陷阱。2、案例目录:第19章基于模拟退火算法的TSP算法19.1理论基础19.1.1模拟退火算法基本原理19.1.2TSP问题介绍19.2案例背景19.2.1问题描述19.2.2解决思路及步骤
3、19.2.2.1算法流程19.2.2.2模拟退火算法实现1.控制参数的设置2.初始解3.解变换生成新解4.Metropolis准则5.降温19.3MATLAB程序实现19.3.1计算距离矩阵19.3.2初始解19.3.3生成新解19.3.4Metropolis准则函数19.3.5画路线轨迹图19.3.6输出路径函数19.3.7可行解路线长度函数19.3.8模拟退火算法主函数19.3.9结果分析19.4延伸阅读19.4.1模拟退火算法的改进19.4.2算法的局限性19.5参考文献clc;clear;closeall;%%ticT0=1000;
4、%初始温度Tend=1e-3;%终止温度L=200;%各温度下的迭代次数(链长)q=0.9;%降温速率loadCityPosition1;%加载数据%%D=Distanse(X);%计算距离矩阵N=size(D,1);%城市的个数%%初始解S1=randperm(N);%随机产生一个初始路线%%画出随机解的路径图DrawPath(S1,X)pause(0.0001)%%输出随机解的路径和总距离disp('初始种群中的一个随机值:')OutputPath(S1);Rlength=PathLength(D,S1);disp(['总距离:',nu
5、m2str(Rlength)]);%%计算迭代的次数TimeTime=ceil(double(solve(['1000*(0.9)^x=',num2str(Tend)])));count=0;%迭代计数Obj=zeros(Time,1);%目标值矩阵初始化track=zeros(Time,N);%每代的最优路线矩阵初始化%%迭代whileT0>Tendcount=count+1;%更新迭代次数temp=zeros(L,N+1);fork=1:L%%产生新解S2=NewAnswer(S1);%%Metropolis法则判断是否接受新解[S1,
6、R]=Metropolis(S1,S2,D,T0);%Metropolis抽样算法temp(k,:)=[S1R];%记录下一路线的及其路程end%%记录每次迭代过程的最优路线[d0,index]=min(temp(:,end));%找出当前温度下最优路线ifcount==1
7、
8、d09、x,1:end-1);%记录当前温度的最优路线T0=q*T0;%降温fprintf(1,'%d',count)%输出当前迭代次数end%%优化过程迭代图figureplot(1:count,Obj)xlabel('迭代次数')ylabel('距离')title('优化过程')%%最优解的路径图DrawPath(track(end,:),X)%%输出最优解的路线和总距离disp('最优解:')S=track(end,:);p=OutputPath(S);disp(['总距离:',num2str(PathLength(D,S))]);dis
10、p('-------------------------------------------------------------')toc1、案例背景TSP(旅行商问题—Trav