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

本文深入探讨了模拟退火算法的基本原理及应用,特别是在解决旅行商问题(TSP)中的表现。通过双层迭代过程,即退火过程和新解寻求过程,算法能够有效地避免局部最优解,达到全局最优。关键步骤包括新解的产生、判断和接受/舍弃,以及重要的超参数调整。
摘要由CSDN通过智能技术生成

参考链接:

模拟退火算法解决TSP问题

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

模拟退火算法总结

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

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

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

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

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

è¿éåå¾çæè¿°è¿éåå¾çæè¿°

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

模拟退火的超参数:

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

起始温度:30000

终止温度:1e-8

冷却率:0.98

代码

github地址

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值