(共26张PPT)
项目挑战:无人机送快递的配送决策
单击此处添加副标题
配送要求
1.快递分急件和非急件,急件优先配送
2.让所有的用户等待的时间最短
在无人配送时,什么因素决定配送顺序?
第一节
配送距离
紧急程度
由于地球是曲面的,因此两点之间距离:
S=2*R*arcsin()
其中R为地球半径:6371
WA,JA,WB,JB分别为AB两点经纬度对应的弧度
df[i][0] df[i][1] df[i][2] df[i][3] df[i][4] df[i][5]
快递编号 地点 纬度 经度 是否急件 距离
西湖风景名胜区(快递配送中心) 30.22537939 120.1250826
6600008 首创奥特莱斯 30.0782965 120.0297387 否
6600065 浙江西湖美术馆 30.25145832 120.1447587 是
6600066 鸡笼山 30.22730381 120.1173484 是
…… …… …… …… …… ……
S=2*R*arcsin()
为了计算每个快递地点和配送中心的距离需要哪些数据?
第i个快递地点经度和纬度:
配送中心经度和纬度:
df[i][2]和df[i][3]
df[0][2]和df[0][3]
快递地点经度和纬度
配送中心经度和纬度
WA
JA
WB
JB
弧度=degree*3.14/180
S=2*R*arcsin()
a[i][2]
a[i][3]
a[0][2]
a[0][3]
根据读取的快递数据信息,计算出每个快递距离配送点的距离,并存储在二维列表字段“距离”中,该功能也能封装于自定义函数。
任务一:计算距离
计算每个快递地址和配送中心的距离
1
按照配送紧急程度、配送距离进行策略设计
2
输出配送顺序
3
√
配送快递时,何如设计快递的配送策略,才能让所有用户的等待时间最短?
任务二:配送策略设计
配送中心
1号快递
2号快递
3号快递
1号等待时间:sum1=t1
2号等待时间:sum2=t1
3号等待时间:sum3=t1
配送中心
1号快递
2号快递
3号快递
1号等待时间:sum1=t1
2号等待时间:sum2=2*t1+t2
3号等待时间:sum3=2*t1+t2
配送中心
1号快递
2号快递
3号快递
1号等待时间:sum1=t1
2号等待时间:sum2=2*t1+t2
3号等待时间:sum3=2*t1+2*t2+t3
配送中心
1号快递
2号快递
3号快递
按照最近先配送的时间总和:
sumzj=5*t1+3*t2+t3
配送中心
1号快递
2号快递
3号快递
按照最远先配送的时间总和:
sumzy=5*t3+3*t2+t1
如果先送最近的:sumzj=5*t1+3*t2+t3
如果先送最远的:sumzy=5*t3+3*t2+t1
等待时间差=sumzj-sumzy=4*t1-4*t3<0
因此可以得出结论:配送先配 .
最近的
根据策略设计结果完成程序的实现。
任务三:配送策略实现
能否在冒泡排序时直接将数据按照紧急程序为主要关键字、配送距离为次要关键字排序完成?
第j号快递
第j-1号快递
是否加急:是
是否加急:否
配送距离:5km
配送距离:9km
即使配送距离再长,也得优先配送加急的快递。
非急件
急件
df[j-1]
df[j]
急件
非急件
df[j-1]
df[j]
急件
急件
df[j-1]
df[j]
非急件
非急件
df[j-1]
df[j]
不做任何处理
直接交换
比较两份快递的配送距离,近者优先
df[j-1][4] == "否" and df[j][4] == "是"
df[j-1][4] == df[j][4] and df[j-1][5] > df[j][5]
如果需要计算所有用户的等待时间时,则该如何计算?
总等待时长+=(2*未配送快递数量-1)* 当前快递配送时间
总等待时长+=(2*未配送快递数量-1)* 当前快递配送时间
1.方案设计时要考虑实际情况对数据进行处理;
2.利用排序算法实现设计配送策略;
3.最终计算所有用户的等待时间,并控制等待时间最优化
任务总结
感谢观看
单击此处添加副标题