模拟退火算法之旅行商(TSP)问题matlab实现

关于模拟退火算法的理论部分,小编就不多做赘述,请看下图(如有问题请百度):



话不多说,请看例题:
一位旅行者从出发点(200,200)出发,要求经过30个目标点,并且每个点只能经过一次,最终经过所有点后回到起点。 要求:为旅行者制定一条最短路径。
下面是利用模拟退火算法求TSP问题的代码:
由于小编比较懒,不想挨个敲坐标,就利用matlab中rand()函数自动生成30个点的坐标。如果你有坐标,换成自己的坐标就行了。
生成坐标代码如下:

x=randi([0,150],30,1);
y=randi([0,120],30,1);     %%%一时找不到数据,就自动生成了三十个坐标点(xi,yi),i=1,2...,30;
sj0=[x,y];
ss0=[200,200];             %%%出发点选取(100,100);
sj=[ss0;sj0;ss0];           %%%将出发点加在30个点的开始和结束;

模拟退火求TSP问题的matlab源码

%%%(1)计算各点之间的距离,存储于距离矩阵d中
d=zeros(length(sj));       %%%距离矩阵初始化;
for i=1:length(sj)-1for j=i+1:length(sj)d(i,j)=sqrt((sj(i,1)-sj(j,1))^2+(sj(i,2)-sj(j,2))^2);end
end
d=d+d';%%%(2)求一个较好的初始解
path=[];                 %%%路线初始化;
long=inf;                %%%路线长度初始化;
rand('state',sum(clock));
for j=1:100000path0=[1,1+randperm(length(sj0)),length(sj)];temp=0;for i=1:length(sj)-1temp=temp+d(path0(i),path0(i+1));endif temp<longpath=path0;long=temp;end
end
%%%(3)退火过程
L=50000;
at=0.999;  %%%降温系数
T=100;     %%%初始温度
e=0.1^30;  %%%终止温度
long_temp=[];
m=0;
for k=1:Lc=1+randperm(length(sj0),2);c=sort(c);c1=c(1);c2=c(2);df=d(path(c1-1),path(c2))+d(path(c1),path(c2+1))-d(path(c1-1),path(c1))-d(path(c2),path(c2+1));%%%代价函数增量if df<0     %%%接受准则path=[path(1:c1-1),path(c2:-1:c1),path(c2+1:length(sj))];long=long+df;elseif exp(-df/T)>=rand   %%% 概率接受path=[path(1:c1-1),path(c2:-1:c1),path(c2+1:length(sj))];long=long+df;endt=0;for i=1:length(sj)-1t=t+d(path(i),path(i+1));endlong_temp=[long_temp,t];T=at*T;if T<ebreak;endm=m+1;
end
path;
long
subplot(2,1,1)
xx=sj(path,1);
yy=sj(path,2);
plot(xx,yy,'-*')
subplot(2,1,2)
plot(long_temp,'-')


总结:小编通过对算法和代码进行多次运行。对算法进行分析,小编个人看法,模拟退火算法在求解TSP问题上有许多优势,但是,在模拟退火过程中,由于新的状态完全依赖于上一个状态,并且在新状态接受过程中,需要满足接受概率。因此,对于同一个问题,每次运行的结果也略有不同。同时,降温速度的快慢,需要具体情况具体把握。
就本文的问题欢迎感兴趣的小伙伴私聊,同时,小编存在的问题欢迎大家随时指正。最后,喜欢小编的小伙伴点个赞,加个关注吧!小编将持续更新

模拟退火算法之旅行商(TSP)问题matlab实现相关推荐

  1. 【路径规划】基于灰狼算法求解旅行商TSP问题matlab源码

    一.旅行商问题 TSP问题即旅行商问题,经典的TSP可以描述为:一个商品推销员要去若干个城市推销商品,该推销员从一个城市出发,需要经过所有城市后,回到出发地.应如何选择行进路线,以使总的行程最短.从图 ...

  2. matlab算法大全 pdf_遗传模拟退火算法求解旅行商(TSP)问题

    hello大家好,很高兴又和大家见面了.在之前的遗传算法(GA)求解旅行商问题(TSP)MATLAB代码讲解和模拟退火(SA)算法求解旅行商 (TSP)问题MATLAB代码讲解这两篇推文中,分别讲解了 ...

  3. 模拟退火(SA, Simulated Annealing)算法解决旅行商TSP问题

    01 什么是旅行商问题(TSP)? TSP问题(Traveling Salesman Problem,旅行商问题),由威廉哈密顿爵士和英国数学家克克曼T.P.Kirkman于19世纪初提出.问题描述如 ...

  4. 鲸鱼优化算法WOA求解旅行商TSP优化问题(2022.6.2)

    鲸鱼优化算法WOA求解旅行商TSP优化问题(2022.6.2) 引言 1.鲸鱼优化算法WOA 1.1 WOA算法原理介绍 1.1.1 包围猎物 1.1.2 气泡网式攻击猎物(开发阶段) 1.1.3 寻 ...

  5. 【Tsinghua】旅行商(TSP)

    关于这道题,我要说两句,这道题我觉得我用拓扑排序的思路肯定是没错的,而且也对了几组数据,但是其他几组却超时,肯定是哪里的代码优化的不够好...... 最后只得了40分... 旅行商(TSP) 描述 S ...

  6. MATLAB实战系列(五)-模拟退火(SA)算法求解旅行商 (TSP)问题MATLAB代码讲解

    一 | 模拟退火图片演示 首先为了让各位能够对模拟退火算法有一个直观的视觉冲击,现在我们想要找到下面这幅图的极大值点,很明显这幅图中有许多局部极值点,如果仅仅采用简单的爬山算法很容易陷入局部最优. 这 ...

  7. 模拟退火算法求函数极值(含MATLAB代码实现)

    二.模拟退火算法 1. 简介      模拟退火算法的思想借鉴于固体的退火过程,当固体的温度很高时,内能比较大,固体内的粒子处于快速无序运动状态,当温度慢慢降低,固体的内能减小,粒子逐渐趋于有序,最终 ...

  8. 分支限界解决旅行商tsp问题

    本人的算法大作业 参考博客: http://blog.csdn.net/qq_32400847/article/details/51813606 http://www.cnblogs.com/ciel ...

  9. 【算法】旅行商A*算法

    #include "stdio.h"const int max=9999; const int ax=50;int isbest(int i,int bestpath[],int ...

  10. 基于模拟退火算法的TSP算法

    文章目录 一,理论基础 二,TSP问题介绍 三,思路和步骤 控制参数的设置 初始解 解变换生成新解 Metropolis准则 降温 四,MATLAB程序实现 五,结果分析 六,算法的改进 七,算法的局 ...

最新文章

  1. 华人科学家,Yang-Kieffer算法之父杨恩辉斩获Eric E.Summer奖
  2. Scala学习第五天数组
  3. 对不起,亲爱的,我将离开你
  4. SQL Server 中关于EXCEPT和INTERSECT的使用方法
  5. 血栓清道夫机器人_血栓“清道夫”找到了!木耳排第三,排在第一很多人都并不知道...
  6. (四)在MLOps管道中进行持续训练
  7. 算法与数据结构1800题 之字符串(一)
  8. vue 动态渲染表格序号列
  9. java 图文混排_图文混排的几种实现方案
  10. qt 绘制五角星图形
  11. c位边上还有什么位_章泽天聚会站边位,被称太委屈,看清C位的万宝宝后就明白了...
  12. 作为技术人,如何突破自己的技术瓶颈,从而提高自己的核心竞争力
  13. Educoder中Spark任务提交
  14. Elasticsearch学习2 SpringBoot整合 测试复杂检索
  15. Spring框架学习(四):聊一聊xml配置和Java配置
  16. Graphhopper Routing导航API请求参数和返回结果说明
  17. AndroidStudio的下载、安装、第一个工程运行
  18. kmp算法例题 登山
  19. io 流相关知识之available()方法的使用总结
  20. 西北农林科技大学计算机学院保研,坐落在小镇上的985大学,学生家长纷纷嫌弃,考上的人却在偷笑...

热门文章

  1. Flutter之路由系列之Route
  2. highcharts绘制统计图的应用
  3. Anaconda 3 详细安装教程
  4. html网页代码入门,html 网页入门(示例代码)
  5. 全日制计算机大专学校有哪些科目,全日制大专报名_实时汇总
  6. 华为手机邮箱 html邮件_华为手机使用小妙招,可以一键翻译外语邮件,帮我们轻松办公...
  7. php 智能输入提示插件,PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能_PHP...
  8. linux应用--yum
  9. Python列表中数据插入数据库
  10. linux 内存坏了,Linux的缓存内存 Cache Memory详解