问题描述:
已知信息:175个城市点的坐标位置图(组成一个近似的圆形)
已知有175个城市点,位置如上图所示,求历经所有城市点的最短距离是多少?
问题分析:根据我们的常识,这条最优路径应该是依次穿过各城市点的圆环形,也就是所谓的最优解。最优解也就是圆的周长:2πr=2*3.14159…*5=31.4159…,下面我们用模拟退火算法求解,来验证我们的猜想。
目标:用模拟退火算法求出一条经过所有城市的最短路径,并求出最短距离。如果求解正确的话,这条路径应该是依次穿过各城市点的圆环形,也就是所谓的最优解。最优解也就是圆的周长:2πr=2*3.14159…*5=31.4159…
注:由于是用175个点逼近一个圆形,所以175个相邻点之间的连线近似等于圆的周长。
求解思路及结果分析:
①首先给定初始路径,这些路径是随机给定的,所以城市之间的连线是随机的,路径的长度也会很大!
②通过模拟退火算法不断优化问题的解,可以看到,随着迭代次数的增加,路径的随机性在降低!
③随着迭代次数的增加,温度逐渐降低,最优解得到更新,总路径长度在逐渐减小,慢慢靠近我们期望的理想解。最终收敛,路径的最短距离为31.4109,非常接近于圆的周长!
④这证明模拟退火算法优化达到了期望的效果,在不到60次的迭代中找到了最优解。
先看下求解结果!
Matlab模拟退火动态优化全过程可视化视频实例(帮助直观理解)
运行结果: