给出python代码,随机给出50个二维坐标点,使用启发式算法解决包含这50个点的旅行商问题,最终将路线绘制为动画
时间: 2023-03-07 19:08:07 浏览: 80
import random
import matplotlib.pyplot as plt
import numpy as np
from heuristics import * # 生成50个二维坐标点
points = []
for i in range(50):
x = random.randint(-50, 50)
y = random.randint(-50, 50)
points.append((x, y)) # 使用启发式算法解决旅行商问题
solution = nearest_neighbor_heuristic(points) # 将路径绘制为动画
fig, ax = plt.subplots()
ax.set_xlim(-50, 50)
ax.set_ylim(-50, 50)
ax.set_title('Travelling Salesman Solution') # 绘制所有坐标点
for point in points:
ax.scatter(point[0], point[1], s=4, c='k') # 绘制路径
for i in range(len(solution)):
x = [points[solution[i-1]][0], points[solution[i]][0]]
y = [points[solution[i-1]][1], points[solution[i]][1]]
ax.plot(x, y, c='b') # 动画效果
ani = animation.FuncAnimation(fig, animate, frames=len(solution), interval=500, repeat=False, blit=False)
plt.show()