课题名称:基于跳跃降温的模拟退火算法的的旅行商问题TSP
程序版本:2023-06-11
代码获取方式:
QQ:491052175
VX:Matlab_Lover
模型介绍:
第一步:设定参数(其中包括判断是否跳跃的温度值)
第二步:寻找初始解 对于n个城市的TSP问题,能够得到的解就是对1~n的一个排列,其中每个数字为对应城市的编号,如
对10个城市的TSP问题,则 1|10|2|4|5|6|8|7|9|3就是一个合法的解,采用产生随机排列
的方法产生一个初始解S
第三步:解进行变换生成新解:通过对当前解S1进行变换,产生新的路径数组即为新解,这里采用的变换是产生
随机数的方法来产生将要交换的两个城市,用二领域变换法产生新的路径,即新的可行解S2。
第四步:Metropolis准则。若路径长度函数f(s),则当前解的路径为f(s1),新解的路径为f(s2),
路径插df=f(s2)-f(s1),则Metropolis准则里表示df<0,则以概率1接受新的路径,否则以某种概率
接受新的路径
第五步:降温。判定当前温度值是否高于跳跃降温的温度阈值,如果当前温度高于阈值,利用降温速率q进行二次降温从而实现加快收敛,即T=q^2*T.
如果当前温度低于阈值,用降温速率q进行降温,即T=q*T。若T小于结束温度,则停止迭代输出当前状态,否则继续迭代
特殊说明:
1.程序支持导入包含城市坐标的Excel或者mat文件,也可以随机产生一定数量的城市坐标。
2.神经网络每一次的预测结果都不相同,为了得到更好的结果,建议多次运行取最佳值。
3.城市坐标及距离矩阵可以打开CityInfo.mat文件查看。
代码获取方式:
私聊博主获取
仿真结果:
初始随机解的旅行商路径图
跳跃降温SA求解旅行商路径图
距离随迭代次数的变化曲线