【巨量坐标点路径距离最短新探索】

目录

一、前言

二、思路

三、实现

三、小结


一、前言

   多点路径距离最短问题是一个提出很久的课题,实际应用范围很广,快递配送方面、无人机运输投送,线路安排、点位分配等,最短距离的探索与研究成果可转化为实际应用,目前已经有很多成熟的算法,本文将从另一个思路,对100万虚拟坐标点,结合实际需求,进行最短距离的探索,分享与大家参考。

二、思路

1、随机生成100万个坐标点,供测试,因数据太大,使用 pickle 格式来保存生成的100万个数据,升序排列,格式【x,y,m】代表x、y坐标值和该点位名称,x、y值范围均是0至1000,保留两位小数。

def test_all(n,url):  # 生成虚拟数据 
    val=[[int(random.random()*100000)/100,int(random.random()*100000)/100,int(1+i)] for i in range(n)]
    pd.DataFrame(sorted(val)).to_pickle(url)

2、因点位数量太大,结合快递投递的实际情况,对这100万个坐标位置进行分组,便于分配给相应的投递站,本文以大约每组100个坐标点的设想,进行分组,各组坐标点均按顺时针顺序排序后保存于另一个 pickle 文档中,供后续程序使用。

def fenzu_pickle(url,to_url):    #以Pickle方式读取总表数据、分组、再保存  
    list_A=pd.read_pickle(url).values.tolist()
    list_B = [[] for _ in range(10000)]
    for s in list_A:
        n=int(s[0]/10)*100+int(s[1]/10)
        list_B[n].append(s)
    list_B_1=[shun(s) for s in list_B if len(s)>0]   # shun(s) 是顺时针排列的自定义函数
    pd.DataFrame(list_B_1).to_pickle(to_url)

3、求各组中所有坐标点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值