模拟退火算法 python实现旅行家问题

参考链接:

模拟退火算法解决TSP问题

RE:从0开始的模拟退火算法(python实现)

模拟退火算法总结

详细的步骤在上面的参考文章都详细说明了。总的来说,模拟退火算法就是两层迭代,最外层迭代是模拟退火的过程,也就是温度降低的过程,每迭代一次,温度就会降低一次,起始温度越高,终止温度越低,最终的结果会更好。里面迭代是寻求新解的过程,这层迭代可有可无,但是多了这层迭代就可以多次尝试跳出局部最优解。

寻求新解的过程里,总的来说就是“产生新解—判断—接受/舍弃“,

产生新解:根据不同的问题有不同的产生新解问题,这也是为什么很多问题可以用到模拟退火的原因。

判断:新解是否比旧解好,如果好,那肯定直接采纳了。不好的话,就要根据概率来看了。

接受/舍弃:这里就是根据概率来决定是否接纳更坏的解。接受准则:

è¿éåå¾çæè¿°模拟退火算法 python实现旅行家问题_第1张图片

这里注意si'是新解,而si是旧解,顺序不要搞错,否则结果是错误的。

模拟退火的超参数:

模型是否能够产生好的结果,最终还是要调参的。

起始温度:30000

终止温度:1e-8

冷却率:0.98

代码

github地址

模拟退火算法 python实现旅行家问题_第2张图片

可以看到结果虽然震荡很厉害,但是总体趋势是下降的

你可能感兴趣的:(算法)