python - Python:从弧线创建路线
问题描述
我正在研究一个有能力的车辆路线问题,并找到了一个最佳解决方案,在我的图表上使用以下一组弧线活动:
[(0, 1),
(0, 4),
(0, 5),
(0, 6),
(0, 7),
(0, 10),
(1, 0),
(2, 13),
(3, 9),
(4, 12),
(5, 0),
(6, 14),
(7, 8),
(8, 0),
(9, 0),
(10, 11),
(11, 0),
(12, 3),
(13, 0),
(14, 2)]
该列表称为arcsDelivery
.
我想重组这个列表来找到存储在列表中的我找到的路线routesdelivery
:
[[0,1,0],[0,4,12,3,9,0],[0,5,0],[0,6,14,2,13,0],[0,7,8,0],[0,10,11,0]]
但是,我一直在努力这样做,有人有一些有用的提示吗?
解决方案
这是一种方法(考虑到arcsdelivery
列表是根据每个元组的第一个元素按升序排序的):
def findTuple(elem):
for t in arcsDelivery:
if t[0]==elem:
return t
return None
arcsDelivery = [(0, 1),
(0, 4),
(0, 5),
(0, 6),
(0, 7),
(0, 10),
(1, 0),
(2, 13),
(3, 9),
(4, 12),
(5, 0),
(6, 14),
(7, 8),
(8, 0),
(9, 0),
(10, 11),
(11, 0),
(12, 3),
(13, 0),
(14, 2)]
routesDelivery = []
startRoutes = len(list(filter(lambda elem: elem[0]==0, arcsDelivery)))
for i in range(startRoutes):
tempList = []
currentTuple = arcsDelivery[i]
tempList.append(currentTuple[0])
tempList.append(currentTuple[1])
while True:
if currentTuple[1]==0:
break
else:
nextTuple = findTuple(currentTuple[1])
currentTuple = nextTuple
tempList.append(currentTuple[1])
routesDelivery.append(tempList)
print(routesDelivery)
输出:
[[0, 1, 0], [0, 4, 12, 3, 9, 0], [0, 5, 0], [0, 6, 14, 2, 13, 0], [0, 7, 8, 0], [0, 10, 11, 0]]
推荐阅读
- tensorflow - 如何扩展我的 Keras 层的暗淡并避免使用 Lambda 层
- wordpress - 如何删除我网站上的所有出站链接?
- android - 带有标签布局的Android导航抽屉片段
- angular - 如何更新 Firebase 文档而不覆盖现有值
- javascript - Javascript 创建一个对象来存储所有数据并显示信息
- java - 从网站获取价值,但 java 代码不起作用。怎么修?
- javascript - 将方法向下传递两个级别
- javascript - 如何使用 $lookup 填充 Id 的结果数组
- php - 如何使用 HTTP 请求从 Laravel API 中检索数据?
- javascript - 类内的静态函数未定义返回