因此,我正在开发一种遗传算法,用于解决正在使用Tkinter显示我的结果的Python中的旅行商问题。该算法进展顺利,但我需要弄清楚显示结果时遇到的一些问题。
[基本上,我让它生成一个随机的点集并将其显示在窗口中,然后当我运行该解决方案时,它会创建一条线,以所有点的最佳顺序将其连接到一条线中(或“ “)的订单。从那里,它应该可以选择生成下一代,该世代将清除所有当前线,使这些点保持可见,然后根据下一代最佳解决方案绘制新线。当前,但是我在确定清除线而不清除点的最佳方法时遇到了麻烦。
这是我用来生成行的代码:
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”是在窗口中分配的值,以确定要创建多少个点。我计划将行的清除与按下按钮时将要调用的函数联系在一起。
关于在这里实现我想要的最佳方法的任何建议?即使需要重组生产线的工作方式,我也无所不能。
不确定这是否是您想要的,您没有显示足够的代码。将行添加到列表中,然后您可以再次删除列表中的项目。
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)