1.一种基于线性时序逻辑的移动端快递派送路径规划方法,具体步骤如下:步骤1:在Android平台上,基于百度地图开发包进行加权切换系统的构建;
根据快递派送任务地点,将快递派送转化为旅行商问题,避开百度地图复杂道路网络的建模,仅将任务地点建模为一个加权的有限状态切换系统,即weighted finite-state transition system,简称WFTS;WFTS是一个元组T=(Q,q0,δT,AP,LT,ωT),其中Q是一个有限的状态集;q0∈Q是初始状态,代表派送员派送的起点;δT∈Q×Q代表切换关系;AP代表原子命题集;LT:Q→2AP代表标识函数集;ωT: 代表两状态之间切换的成本,即时间和距离;基于百度地图开发包能够获取地图中任意两点之间的实际驾车距离,将实际驾车距离作为它们间的切换权重;距离的获取是通过调用百度地图开发包的两点驾驶距离方法得到,即算法一中的BmapDrivingDis(),进而将任务点构建为有限状态的加权切换系统WFTS,算法一具体过程如下:算法一:构建加权切换系统T,即ConstructT()
1)首先输入派送起点P0,派送地点集P;
2)令Q=P,q0=P0,i=0,1,2...n,j=0,1,2...n;
3)如果i≠j且qj∈δ(qi)时,ω(qi,qj)=BmapDrivingDis(qi,qj),否则ω(qi,qj)=inf;
4)循环步骤3,直至全部ω(qi,qj)都被赋值;
5)输出加权切换系统T;
步骤2:线性时序逻辑语言描述多点快递派送任务;
针对快递员派送任务,线性时序逻辑语言能够方便的描述这些任务,它由原子命题和操作符构成,具有如下形式:其中,α∈AP是一个原子命题,符号∨即与、和 即非是标准布尔操作符,F即最终,G即总是和U即直到是时序操作符,Fφ0表示φ0的最终状态为真,实现访问, 表示全局总是避免φ3,能够用于避障,φ4Uφ5表示直到φ5为真,φ4一直保持为真;得到快递任务公式φ后,通过LTL2BA工具包将其转化为一个Büchi自动机,Büchi自动机是一个元组Aφ:=(Sφ,S0,∑φ,δφ,Fφ),其中Sφ代表一个有限的状态集;S0∈Sφ代表初始状态;∑φ代表输入的字符表;
代表切换函数; 代表最终状态集;
步骤3:构建任务可行网络拓扑;
为将环境信息与任务信息相融合确保最终搜索的路径既满足环境信息又符合快递派送需求,通过将加权切换系统与Büchi自动机笛卡尔乘积,利用Product自动机构建任务可行网络拓扑,即 它也是一个元组AP=(SP,SP0,δP,ωP,FP),其中是状态集;SP0={q0}×S0代表初始状态集;δP:
代表状态间的切换函数,其定义为当且仅当qj∈δT(qi)并且sl∈δφ(sk,LB(qi))时,(qj,sl)∈+δP((qi,sk))成立;ωP:SP×SP→R继承自T且为正的权重函数,即当(qj,sl)∈δP((qj,sk))时,则ωP((qi,sk),(qj,sl))=ωT(qi,qj);FP=Q×Fφ代表一个最终的接收状态集;对于任务可行网络拓扑的一个搜索路径rP,如果 那么此rP是可被接受的,其中inf(rP)代表路径的循环部分;
步骤4:快递派送最优离散路径搜索;
在构建任务可行网络拓扑AP后,根据快递派送的起始状态,最终接收状态和状态间的切换关系,利用Dijkstra最短路径搜索算法搜索最终的可行离散路径,Dijkstra()代表Dijkstra算法,minCost()为求最小花费方法,算法过程如算法二所示:算法二:搜索最优路径rP,即OptimalPath()
6)首先输入T,Aφ,搜索起点sP0=(q0,s0);
7)然后构建任务可行网络拓扑 SP0=sP0;
8)如果Product自动机的最终接收状态集 则返回空路径;
9)否则,对于AP每一个最终接收状态fP∈FP,利用Dijkstra算法搜索可行路径rP;
10)如果可行路径 则路径不存在,返回空路径;
11)当路径存在时,rP={rP'|minCost(rP'),rP'∈rP};
12)输出可行最优路径rP;
步骤5:快递员实际环境派送路线搜索;
对于在任务可行网络拓扑上搜索出的满足派件任务需求的任意路径rP=(p0,s0)→(p1,s1)→(p2,s2)...,在加权切换系统T中都有与之对应的路径rT=p0→p1→p2...存在,且rT同样满足派送任务需求,rT与rP的总耗费相同,该路径满足派送任务需求的同时保证了路径最优性;最后在Android平台上,基于百度地图开发包的两点间的驾驶导航方法将映射回加权切换系统中的离散路径rT连续化,进行二次规划获得派送员实际可驾驶派送路线R,二次规划的权重问题在步骤1的算法一中已经被考虑,实现过程如算法三所示;
算法三:离散路径连续化,即ProjectToR()
13)输入加权切换系统中的离散路径rT;
14)对于x=0,1,2...m-1,m为rT路径节点数;
15)如果x=m-1,R(m-1)=BmapDriving(rT(m-1),rT(0)),否则R(x)=BmapDriving(rT(x),rT(x+1));
16)循环步骤15直至全部路径节点都映射回现实路径;
17)输出快递员实际驾驶派送路径R=R(0)R(1)R(2)...R(m-1)。