模拟退火算法-TSP
来源:互联网 发布:舒尔特表训练软件 编辑:程序博客网 时间:2024/06/05 20:12
clc;clear;close all;%%ticT0=1000; % 初始温度Tend=1e-3; % 终止温度L=500; % 各温度下的迭代次数(链长)q=0.9; %降温速率%% 加载数据load CityPosition1;%%D=Distanse(X); %计算距离矩阵N=size(D,1); %城市的个数%% 初始解S1=randperm(N); %随机产生一个初始路线%% 画出随机解的路径图DrawPath(S1,X)pause(0.0001)%% 输出随机解的路径和总距离disp('初始种群中的一个随机值:')OutputPath(S1);Rlength=PathLength(D,S1);disp(['总距离:',num2str(Rlength)]);%% 计算迭代的次数TimeTime=ceil(double(solve(['1000*(0.9)^x=',num2str(Tend)])));count=0; %迭代计数Obj=zeros(Time,1); %目标值矩阵初始化track=zeros(Time,N); %每代的最优路线矩阵初始化%% 迭代while T0>Tend count=count+1; %更新迭代次数 temp=zeros(L,N+1); for k=1:L %% 产生新解 S2=NewAnswer(S1); %% Metropolis法则判断是否接受新解 [S1,R]=Metropolis(S1,S2,D,T0); %Metropolis 抽样算法 temp(k,:)=[S1 R]; %记录下一路线的及其路程 end %% 记录每次迭代过程的最优路线 [d0,index]=min(temp(:,end)); %找出当前温度下最优路线 if count==1 || d0<Obj(count-1) Obj(count)=d0; %如果当前温度下最优路程小于上一路程则记录当前路程 else Obj(count)=Obj(count-1);%如果当前温度下最优路程大于上一路程则记录上一路程 end track(count,:)=temp(index,1:end-1); %记录当前温度的最优路线 T0=q*T0; %降温 fprintf(1,'%d\n',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))]);disp('-------------------------------------------------------------')toc
0 0
- 模拟退火算法TSP
- 模拟退火算法-TSP
- 模拟退火算法-TSP问题
- 模拟退火算法求解TSP
- 模拟退火算法求解TSP问题
- 模拟退火算法求解TSP问题
- TSP 之模拟退火算法 cpp实现
- TSP问题的模拟退火算法
- 模拟退火算法解决TSP问题
- 模拟退火算法求解TSP问题
- 模拟退火算法解决TSP问题
- 模拟退火算法解决TSP问题
- TSP问题之模拟退火算法
- 模拟退火算法求解TSP问题
- 模拟退火算法求解TSP问题
- 用模拟退火算法求解TSP问题
- 模拟退火解决tsp
- 模拟退火TSP问题
- 观察者模式
- Eclipse下svn的创建分支/合并/切换使用
- CCF之无线网络(java)
- MyBatis SQL xml处理小于号与大于号
- 类和对象
- 模拟退火算法-TSP
- placeholder文字设定样式
- Java设计模式之代理模式
- uboot——启动第二阶段分析
- 七牛云存储____七牛js直接上传图片
- Pyspider windows下的安装
- Android中的线程池
- Java设计模式之观察者模式
- zoj 3601unrequited Love