[发明专利]基于Multi-Paxos的无人车物流任务分配方法有效
申请号: | 201910268757.1 | 申请日: | 2019-04-03 |
公开(公告)号: | CN110046851B | 公开(公告)日: | 2022-08-23 |
发明(设计)人: | 孙俭;沈佳慧;郭光浩;张迎周 | 申请(专利权)人: | 南京邮电大学 |
主分类号: | G06Q10/08 | 分类号: | G06Q10/08;G06Q10/06 |
代理公司: | 南京苏科专利代理有限责任公司 32102 | 代理人: | 陈望坡;姚姣阳 |
地址: | 210003 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 multi paxos 无人 物流 任务 分配 方法 | ||
1.基于Multi-Paxos的无人车物流任务分配方法,其特征在于:具体包括以下步骤:
步骤一:构建两层次物流物理模型和三阶段任务状态模型,形成同城物流运输的具体场景;
其中,物流物理模型构建及信息初始化的具体步骤如下:
基于地理区域依据实际需要划分多个单元,每个单元内设置一个集中站和多台无人小车;集中站主要负责小车的能量供给和维护,跨单元任务的中转和暂存,所属单元的信息收集、总结和递交;无人小车只负责任务的竞选,任务点序列确定和执行;
步骤(1.1):集中站信息初始化Concentrator(id,i,n,Nmax),其中Concentrator.id是集中站地理位置信息,Concentrator.i是未处理的进站跨单元任务数,Concentrator.n是集中站暂放的包括Concentrator.i的任务数,Concentrator.Nmax为集中站最大负荷存储量;当Concentrator.n接近Concentrator.Nmax时向监视平台发送预警信息;
步骤(1.2):由每个集中站负责该区域订单的收集以及该单元订单库即任务库的生成变动和管理;
任务库MissionBase(num,t,n,list[]).其中MissionBase.num是任务库编号,MissionBase.t是任务库所限时间线,MissionBase.n是任务库中任务数,MissionBase.list[]是任务库中依据任务发布时间排序并且从其他单元运转来的跨单元任务包同样遵守该规则的任务序列;任务库根据时间段进行更替,当MissionBase.n=0时,MissionBase.t以时间间隔MissionBase.TInterval进行后移,直至MissionBase.t大于等于当前时;只有在MissionBase.t之前发布的任务才能进入任务库被分配,也即只有前一个时间段的任务全部被分配执行,后一个时间段的任务才能进入被分配就绪状态;在进站任务流较大时段,MissionBase.t可能早于当前时间;在进站任务流较小时段,MissionBase.t可能迟于当前时间,则进库任务会实时更新;
步骤(1.3):无人小车任务初始化AGV(num,type,id,f,situation,n).其中AGV.num是小车编号,AGV.type是小车种类,AGV.id是小车地理位置信息,AGV.f是小车剩余燃料量,AGV.situation是小车当前状态,AGV.n是小车执行的任务包数;当AGV.type=1时,无人车为一般型,正常参与任务分配;当AGV.type=2和AGV.type=3时,无人车分别为急速型和超大负荷型,分别只运输标有加急件和重大件标识的任务包,由于该两种任务包相对于一般任务包的比例极小,且其分别的时效性和体积质量较大的特点,两种车型均采用一次一任务包的规则;当小车没有竞争任务包处于空闲状态时,AGV.situation=0;当小车在执行任务包时,AGV.situation=1;当小车正在竞争任务包时,AGV.situation=2;当小车处于维护无法工作状态时,AGV.situation=3,小车只有在所竞选得的任务消耗总和逼近AGV.f或者已竞选完任务库中的任务包的情况下,才会去执行任务;
步骤(1.4):不同单元间跨单元任务则采用一辆或多辆大型无人车轮询各单元集中站的方式进行运输;
其中,三阶段任务状态模型构建以及任务信息初始化的具体步骤如下:
步骤(2.1):任务信息初始化Mission(num,,type,t,src,dst,src’,dst’,f,situation,step,chosen),其中Mission.num为任务编号,Mission.type为任务种类,Mission.t为任务发起时间,Mission.src和Mission.dst分别为任务的真实源地址和目的地址,Mission.src’和Mission.dst’分别为任务在源单元内时或目的单元内时的单元内源地址和目的地址,在单元间运输时则是源单元集中站地址和目的单元集中站地址,Mission.f为任务单元内运输时预估消耗小车能量,Mission.stiuation为任务包所处状态,Mission.step为任务包运输所属阶段,Mission.chosen为被分配无人小车编号;任务包对应无人车类型分为三种类型,Mission.type=1时,为一般型,需进入任务库参与分配;Mission.type=2和Mission.type=3是分别为加急型和超大型,不参与分配,直接进入各自的序列,依据Mission.t分配给空闲的所属车型的无人车;
步骤(2.2):三阶段模型的构建:针对跨单元的任务,当Mission.step=1时,任务包处在源单元内,Mission.src’=Mission.src,Mission.dst’=源单元集中站;当Mission.step=2时,任务包处在单元间运输;当Mission.step=3时,任务包处在目的单元内,Mission.src’=目的单元集中站,Mission.dst’=Mission.dst;针对非跨单元任务,Mission.step=0一直恒定;Mission.step,Mission.src’,Mission.dst’分别由源单元和目的单元集中站进行更改;Mission.situation=1为任务包在源地址未被获取,Mission.situation=2为任务包正在运输状态,Mission.situation=3为任务包已到达目的地址;
步骤二:无人车利用Multi-paxos选举算法对任务进行竞选;
其中,无人车利用Multi-paxos对任务进行竞选的具体步骤如下:
步骤(3.1):当一辆无人车执行完所选的所有任务后,AGV.f低于最低限度值则进入维护状态,否则进入空闲状态;在空闲状态下更新任务库,若任务库为空,则继续监听,否则进入竞选任务包状态;依据Mission.t为优先权对Mission.fAGV.f的逾早发布的任务进行选择;
步骤(3.2):对任务库中的某一个任务的竞选过程进行时间轴纵向分析,即单个paxos过程,具体包括:
步骤(3.2.1):欲选择该任务的无人小车Proposer,向该单元内超过半数的其他无人小车的多数派小车和集中站发送提议Proposal请求Prepare(Mission.num,Proposer.num,Proposal.n).其中Mission.num为任务的编号,Proposer.num为该Proposer的编号,Proposal.n为关于该任务Proposal的编号;
步骤(3.2.2):接到Prepare请求的Acceptor,若该Proposal.n小于其之前收到的关于该任务的其他Prepare请求的编号,则直接丢弃该次请求不予理会;若大于,则承诺将不会接收提议编号比该Proposal.n小的任何请求,并返回承诺应答,若之前没接受过提议则直接接收,并返回承诺应答;
承诺应答Promised(Mission.num{,Preci.num,Preci.f}),其中Mission.num为任务的编号,Preci.num为上一个承诺的Proposal的小车编号,Preci.f为上一个承诺的Proposal的小车剩余燃料量;若小车之前没有接收过任何承诺,则{,Preci.num,Preci.f}省略;
步骤(3.2.3):Proposer得到了该单元内超过半数的小车的Promised回应后,再向多数派小车和集中站发送请采纳请求,此次的多数派小车集合可以和步骤(3.2.1)中的多数派小车集合不相等;
请采纳请求Accept(Mission.num,Proposer.num,Proposal.n,winner.num,winner.f),其中Mission.num为任务的编号,Proposer.num为该Proposer的编号,Proposal.n为关于该任务Proposal的编号,而
Precik.f、Preci.num来源于步骤(3.2.2)中多个返回的承诺应答;
若没有得到超过半数小车的Promised回应,则该次Proposal失败,小车再次发起Proposal,并将Proposal.n在原来基础上加1,但是Proposal.n不能超过最大投票数NPmax,即小车发起Proposal的次数是有限的;
步骤(3.2.4):Acceptor收到请采纳请求后,如果Proposal.n不违反自己做过的承诺,则修改保存该任务信息:
并返回已采纳回应Accepted(Mission.num,Proposal.n),
当接受的请采纳请求的Proposal.n==NPmax时,则chosen.num即为最终该任务被分配的小车;
如若出现Acceptor在采纳了某Proposal之后timeoff时间内仍未有采纳的Proposal,则此时的chosen.num即为最终该任务被分配的小车;
步骤(3.2.5):已确定了最终该任务分配的小车向集中站发送confirm(Mission.num,chosen.num)确定信息,其中Mission.num为任务的编号,chosen.num即为最终该任务被分配的小车;集中站对编号为Mission.num的任务第一次收到的确认信息内容进行修改更新任务库;
步骤(3.3):将步骤(3.2)描述的利用朴素paxos选举算法对单个任务分配的过程作为一个instance,则任务库中每一个任务都是相互独立,互不干扰,可以同步进行的instance,使同一个时刻可以有多个任务在被竞选,无人小车间以及和集中站之间的通讯通过任务编号Mission.num作为instance.num进行标识,防止不同任务instance的冲突;
其中,无人小车的竞选任务操作是建立在本地任务库的基础上进行的,需要确保各小车的本地任务库在竞选时实时同步更新,保证实时准确得知任务库内任务的添加情况,仅做添加操作,任务的删除在对应的instance结束时即完成删除操作,基于Multi-paxos的任务库同步更新的具体步骤如下:
步骤(4.1):任务库的更新单独作为一个利用paxos实现的特殊instance*栈与步骤3中的instance有所不同,是对任务添加的一致性操作,每一次一致性操作过程即为一个instance,具体实现过程如下:
步骤(4.1.1):该instance主要由出现故障时可临时使用代理小车的集中站作为Proposer,无人小车均为Acceptor,集中站向全体小车发出Prepare(instance.num,Proposal.n)提议请求,其中instance.num为instance*区别于步骤3中instance的编号,Proposal.n为该次提议的编号;instance.num在前一轮instance.num的基础上加1,只有前一轮instance完成才能进行下一轮instance;
步骤(4.1.2):收到Prepare的无人小车,若Proposal.n小于之前在该instance内收到的某个Proposal.n,则丢弃不予理会;若大于等于,则接受并返回Promised(instance.num,Proposal.n)承诺应答;
步骤(4.1.3):集中站得到了超过该单元内半数小车的Promised回应后,再向多数派小车发送请采纳请求Accept(instance.num,Proposal.n,add(Mission(...))),其中add(Mission(...))表示增加某个任务的操作;可一次发送多个添加删除操作请求;
当收到的Promised回应不超过半数时,再次发起Prepare提议请求,Proposal.n在原先基础上加一,Proposal.n增长无上限;但是Proposal.n过大则向管理员发出报警,集中站与多辆无人小车失去联系;
步骤(4.1.4):无人小车收到请采纳请求后,如果Proposal.n不违反自己做过的承诺,则对Accept请求内容对任务库进行更新,并返回已采纳回应Accepted(instance.num,Proposal.n);
步骤(4.2):为防止部分通信信息的丢失,引入学习机制,即无人小车在竞选每个任务前学习任务库,具体步骤如下:
步骤(4.2.1):无人小车向集中站或者周围的无人小车发起学习请求Learn(latest.num,deficiency.num{,deficiency1.num...}),其中latest.num为该小车instance*栈中最大的instance.num,deficiency.num为本应连续的instance.num中缺失的instance.num,而且可能有多个;
步骤(4.2.2):收到学习请求learn的集中站,寻找比latest.num大的instance.num;以及缺失的deficiency.num,返回应答信息Response({instance.num,operation(...)},{instance.num,operation(...)}...),其中instance.num与operation即该instance确定的操作序列共同组成一个对应对;
步骤三:无人车基于TSP旅行商问题用分支限界算法确定获得的任务包序列;
其中,无人车基于TSP旅行商问题用分支限界算法确定获得的任务包序列的具体步骤如下:
步骤(5.1):下届函数的确定:
步骤(5.1.1):根的下届函数:构建代价矩阵R,rij为第i地点到第j地点的路径距离,当i=j时rij=∞;然后进行归约,则
L为代价矩阵的约数,ti为第i行的约数(0≤i<n),kj为第j行的约数(0≤j<n);
步骤(5.1.2):非叶状态下届函数:根据其双亲节点的代价矩阵A计算而来;即
(1)令生成A';
(2)再对A'实施归约得到B,此时归约的矩阵约数为LB,则
步骤(5.1.3):叶节点的下届函数:页状态节点S的为沿着该条路径遍历的路径长度;
步骤(5.2):上届函数u(X)=∞;
步骤(5.3):LC分支限界法的步骤如下:
步骤(5.3.1):生成根节点,此时小车在暂停处,从暂停地点出发,接着将所有编号地点生成孩子节点,依次进入优先权队列,其下届函数值即为优先权;
步骤(5.3.2):从优先权队列中优先权最高的出列成为E-结点,并一次生成其孩子结点,依次进入优先权队列;
步骤(5.3.3):重复步骤(5.3.2)操作,直到状态空间树达到第n+1层叶子结点处,此时已生成一条路径;
步骤(5.3.4):判断此时优先权队列根结点优先权是否高于该叶子结点的优先权若高于则重复步骤(5.3.2)、步骤(5.3.3),生成新序列并得到其叶子节点的优先权若则ans指针指向该叶子结点;
步骤(5.3.5):重复操作步骤(5.3.4)直到优先权队列根结点优先权低于叶子结点的优先权则ans指针指向该叶子结点,最小代价序列即为根结点至该叶子结点的序列;
步骤(5.4):孩子结点选择范围:某状态结点至根节点路径上所选择的地点所组成的集合是M,则孩子结点集合来自两个方面:
最终确定任务执行序列。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京邮电大学,未经南京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910268757.1/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种物联网运输车辆监测系统
- 下一篇:一种物流定位追踪系统
- 同类专利
- 专利分类
G06Q 专门适用于行政、商业、金融、管理、监督或预测目的的数据处理系统或方法;其他类目不包含的专门适用于行政、商业、金融、管理、监督或预测目的的处理系统或方法
G06Q10-00 行政;管理
G06Q10-02 .预定,例如用于门票、服务或事件的
G06Q10-04 .预测或优化,例如线性规划、“旅行商问题”或“下料问题”
G06Q10-06 .资源、工作流、人员或项目管理,例如组织、规划、调度或分配时间、人员或机器资源;企业规划;组织模型
G06Q10-08 .物流,例如仓储、装货、配送或运输;存货或库存管理,例如订货、采购或平衡订单
G06Q10-10 .办公自动化,例如电子邮件或群件的计算机辅助管理