一、算法思路
1、模拟退火算法思路
模拟退火算法在每次计算后得到一个新解,若新解比当前解更好,则直接接受该情况以及新解,若新解比当前解更差,则以一定的概率接受新解,且这个概率随着时间的推移逐渐降低,直至达到温度下限。这样做使得搜索可能跳出局部最优解,达到全局最优解。
2、利用模拟退火算法(SA)解决旅行商问题。
在模拟退火过程中,每次迭代都随机选取当前路径中的一段子路径进行翻转,得到新的路径,并计算新路径得到的总距离,接着根据Metropolis准则判断是否接受新的路径,在迭代后更新温度。最后求得的路径并不一定就是最优解,大概率是接近全局最优的局部最优解。
二、伪代码
'''
模拟退火算法解TSP伪代码
def SA_TSP():
初始化距离矩阵
得到初始解以及初始距离
while(true):
for i in range(迭代次数):
采用2变换法生成新的路径
计算新路径的解
根据Metropolis准则判断是否接受新的路径
更新温度t
'''
三、算法代码
import random
import matplotlib.pyplot as plt
# 城市坐标范围
M = 1000
# 城市数量
n = 30
# 初始化城市坐标
city_x = random.sample(range(0, M), n)
city_y = random.sample(range(0, M), n)
# 初始化距离矩阵
distance_City