由于使用贪心算法容易陷入局部最优且依次遍历效率太低,这样的题目适合使用模拟退火算法
首先导入城市的经纬度,算出每两个城市之间的距离,放入一个矩阵d以便后续计算
在模拟退火算法求解之前先使用蒙特卡罗法求出一个较好的初始解
接着定义初始温度,结束条件(最小温度),降温系数,每一个while循环之后使用降温系数对T降温,在每个T固定时用for循环进行多次求解,若解更好直接采纳,若不是更优解,设置一个概率采纳,以防止陷入局部最优,这样就实现了模拟退火算法
以下为所有变量
最终求得最短的路线长度length为1395.1km 路径最优解path如下
这样就完成了本题的模拟退火算法求解