所以我正在用Python开发一个用来解决旅行商问题的遗传算法,目前使用Tkinter来显示我的结果。算法运行得很好,但我需要解决一些显示结果的问题。
基本上,我让它生成一组随机的点并将它们显示在窗口中,然后当我让它运行解决方案时,它会创建连接所有点的线,这些点按照它在单个订单集(或“生成”)中找到的最佳顺序。从那里,它应该可以选择生成下一代,它将清除所有当前的线,使点可见,然后根据下一代的最佳解决方案绘制新的线。然而,目前我很难确定在不清除点的情况下清除线条的最佳方法。
这是我用来生成代码行的代码:
for i in range(0, numCities-1):
x1 = points[bestOrder[i]][0]
y1 = points[bestOrder[i]][1]
x2 = points[bestOrder[i+1]][0]
y2 = points[bestOrder[i+1]][1]
w.create_line(x1, y1, x2, y2)
在本例中,'w‘表示我的画布,'numCities’是在窗口中指定的值,用于确定要创建的点的数量。我计划将行的清除绑定到一个在按下按钮时将被调用的函数。
有什么建议是实现我想要做的事情的最好方法吗?即使这需要重新调整我如何让行生成工作,我也愿意做任何事情。
发布于 2019-11-28 07:50:44
不确定这是否是您想要的,您没有显示足够的代码。将行添加到列表中,然后您可以在其他时间删除列表中的项目。
lines = []
for i in range(0, numCities - 1):
x1 = points[bestOrder[i]][0]
y1 = points[bestOrder[i]][1]
x2 = points[bestOrder[i + 1]][0]
y2 = points[bestOrder[i + 1]][1]
lines.append(w.create_line(x1, y1, x2, y2))
for line in lines:
w.delete(line)
https://stackoverflow.com/questions/59079870
复制相似问题