VRP,TSP路径编码,路径分割的方法

本文探讨了VRP(车辆路径问题)和TSP(旅行商问题)在路径编码和分割方面的实践。文章引用了两位专家的观点,其中一位使用了列表推导式,并提供了导入库和不导入库的两种实现方式。另一位专家的解决方案则未详细展开。作者随后分享了自己的实现思路。

前两种为大佬写的,后面自己写的。

大佬1,运用列表推导式:导库,不导库,两种。

import more_itertools as mi 
 
s=[0,1,2,0,3,4,5,0,6,7,8,0,9,0]
resu =[i for i in mi.split_at(s, lambda x : x == 0) if i]
print(resu)
 
"""--result
[[1, 2], [3, 4, 5], [6, 7, 8], [9]]
"""
不导库,你上面的简写成:
s=[0,1,2,0,3,4,5,0,6,7,8,0,9,0]
 
a = ''.join(map(str, s)).split('0')
c = [list(map(int, i)) for i in map(list, a) if i] 
print(c)

大佬2

'''
遍历列表,遇到0就添加路径,空的也添加。
完事再去掉空路径
'''   
import numpy as np  
a=[1,2,0,4,5,6,0,0,0,0,7,0,8,9]
b=np.array(a)  
c=[] 
t=[]  
for i in a:    
    if(i!=0):   
        t.append(i)      
    else :      
        if len(t)!=0: 
            c.append(t)
            t=[]         
if len(t)!=0:
    c.append(t)   
print(c)

小弟,自己写的

'''
方案1:
情况1, 当前非零
[X0         XX               X]
 *          *                *
添加节点    添加节点      添加节点
添加路径                  添加路径

情况2, 当前为0
[0X    00    0]
 *     *     *
跳过  跳过  跳过

'''
a=[1,2,3,0,0,4,0,5,0]
c=[]
b=[]
for i in range(len(a)): 
    if i == len(a)-1:
        if a[i] != 0:
            b.append(a[i])
            c.append(b)
            b=[]
        else:
            continue
    else: 
        if   a[i] != 0 and a[i+1] != 0:
            b.append(a[i])
        elif a[i] != 0 and a[i+1] == 0:
            b.append(a[i])
            c.append(b)
            b=[]
        elif a[i] == 0:
            continue 
print(c)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值