![一种基于动态路径规划的AGV调度方法与流程](http://img.xjishu.com/img/zl/2019/11/26/2921436426.gif)
本发明涉及优化调度
技术领域:
,尤其涉及一种基于动态路径规划的agv调度方法。
背景技术:
:随着自动化的发展,制造业对仓储管理、物流运输提出了更高的要求,agv凭借其诸多优点成为该领域的关键设备,在自动化运输中起着无可替代的作用。agv小车是实现柔性制造系统的重要部分,而agv调度作为agv设计的核心技术,一直是国内外制造业、自动化领域的研究重点和难点。因此,进行对多agv的调度方法、路径规划等问题的研究,对该领域有重要的意义。对于复杂场景下多任务系统的agv调度方法由于存在路径冲突、资源利用率不高等问题,导致动态环境出现死锁的情况。现阶段在针对路径冲突问题方面,有学者提出一种基于速度调和几何路径调节的策略;还有学者以agv运输车数量、任务满意度、行驶总距离为目标,建立多目标优化模型,并设计混合遗传算法进行求解;在排队场景方面,有学者引入系统调度模型,选择排队队长与等待时间为优化指标,设计了一种调度策略;在路径规划方面,有学者提出一种有限理性自组织方法进行多agv的路径规划,该方法可以有效解决任务资源的局部竞争问题。虽然上述方法可有效解决路径冲突及部分agv利用率不高的问题,但需建立复杂的模型,计算周期长,且通过模型计算出的最优策略可能由于参数设置不当,导致模型规划出的仅为局部最优解。技术实现要素:针对上述现有技术的不足,提供一种基于动态路径规划的agv调度方法。本发明所采取的技术方案是一种基于动态路径规划的agv调度方法,包括如下步骤:步骤1:对agv工作场地进行初始化,将工作场地划分成具有一定长宽的矩形网格,网格线的交叉点称为节点,其中网格的长宽可调,以实现不同精度的调度;步骤2:初始化工作地图,确定agv工作节点,并对地图内所有节点进行编号为1,2,…,n,确定agv数量为m,对其进行编号为1,2,…,m;步骤3:通过弗洛伊德算法计算出任意两个工作节点的最短距离,生成相应的邻接矩阵和距离矩阵;步骤4:任务列表按任务的优先级进行排序,优先级最高的任务为当前任务。在任务列表中获得当前任务的起点,通过距离矩阵寻找工作场地中离任务起点最近的空闲agv执行该项任务,其流程如图1所示;步骤4.1:初始化agv位置,其中小车占用位置为被占用节点,其余点为未被占用节点;步骤4.2:在任务列表中获得当前任务的起点;步骤4.3:判断是否有空闲agv,如果没有则等待空闲agv;步骤4.4:如果有空闲agv,则判断是否有多个空闲agv;步骤4.5:如果当前仅有1辆空闲agv,则选择该agv执行任务;步骤4.6:如果当前空闲agv数量大于1,则通过弗洛伊德算法建立的距离矩阵,计算出所有空闲agv到达任务起点的距离;步骤4.7:选择计算距离最近的空闲agv执行此条任务;步骤4.8:如果距离最近的空闲agv数量大于1,则选择编号最小的agv去执行任务。步骤5:动态规划agv执行路线,避开被占用的节点,使执行任务的agv可达到任务起点,其流程如图2所示;骤5.1:从相邻节点中选择一个曾经未走过的节点或者距离上次走过时间间隔最长的节点;步骤5.1.1:将agv当前位置标记为1,其余相邻的工作节点标记为0;步骤5.1.2:当agv选择移动时候,将相邻的工作节点都减1,然后将下一个即将去的节点再改为1;步骤5.1.3:选择距离上次走过时间间隔最长的节点即数值最小的节点为下一个走的节点;步骤5.1.4:如果满足条件的点很多,则通过权利要求1所述的邻接矩阵和距离矩阵计算agv到达相邻未被占用节点的距离与相邻节点到达任务起点的距离之和;步骤5.1.5:选择距离之和最短的节点走,此时在选择的同时将下一步要走的节点标记为已占用。步骤5.2:判断步骤5.1得到的工作节点是否被agv占用,如果被agv占用,则判断占用的agv是否有在执行任务;步骤5.3:如果占用的agv处于空闲状态,则随机在未被占用的可达的点里选择一个工作节点让空闲agv去执行,如果所有节点都不可达,则随机分配一个未被占用的点让空闲agv去执行,同时当前执行任务的agv选择步骤5.1得到的相邻工作节点移动;步骤5.4:如果占用的agv处于工作状态,则当前执行任务的agv选择一距离近的相邻节点移动;步骤5.5:如果步骤5.1得到的工作节点未被agv占用,则选择该工作节点移动。步骤5.6:重复执行步骤5.1至步骤5.5实现单步动态规划agv的执行路线,直到步骤5.1得到的相邻节点为任务起点,停止循环。步骤6:从任务起点取货后,agv重新动态规划执行路线,避开被占用的节点,到达任务终点;其中,任务终点视为步骤5中的任务起点,从取货点到达任务终点动态规划agv执行路线的过程同步骤5中的过程一致;步骤7:更新任务列表,新增工作任务,取消已经执行完成的工作任务;步骤8:重复执行步骤4至步骤7,直到任务列表为空。采用上述技术方案所产生的有益效果在于:.1.在选择agv时,优先考虑空闲agv,保证每一辆agv的使用频率稳定;2.避障过程中,在车辆出发之前便考虑好车辆行驶路线,避免在运行过程中为了躲避其他车辆而更改路线。3.可以对实际地图进行模拟,还可以通过调整网格的长宽,实现不同精度下的调度策略;4.不仅仅限于工厂中的运输问题,而是对任意场景下的多单位多任务问题的普适性的方案,可以在生活中运用到更加广阔的方面。附图说明图1为本发明agv选择流程图;图2为本发明agv路径规划流程图;图3为本发明实施例中工作场地网格化分图;图4为本发明实施例中初始化工作地图,对工作节点进行编号图;图5为本发明实施例中调度前agv所在工作节点位置图;图6为本发明实施例中调度后agv所在工作节点位置图。具体实施方式下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。本实施例将大小为1600px*800px的区域作为工作场地,该场地中agv的数量为4。本实施例的方法如下所述:步骤1:对大小为1600px*800px的工作场地进行初始化,将工作场地划分成100px*100px的矩形网格,如图3所示,网格线的交叉点称为节点,其中网格的长宽可调,以实现不同精度的调度;步骤2:初始化工作地图,确定agv工作节点,并对地图内所有节点进行编号为1,2,…,22,如图4所示,确定agv数量为4,对其进行编号为1,2,3,4;步骤3:通过弗洛伊德算法计算出任意两个工作节点的最短距离,生成相应的邻接矩阵和距离矩阵;步骤4:任务列表按任务的优先级进行排序,优先级最高的任务为当前任务,任务列表如表1所示;表1按优先级排序的任务列表优先级任务起点任务终点132224183142041311在任务列表中获得当前任务的起点,通过距离矩阵寻找工作场地中离任务起点最近的空闲agv执行该项任务,其流程如图1所示;步骤4.1:初始化agv位置,4辆agv的位置如图5所示,其中小车占用位置为被占用节点,其余点为未被占用节点;步骤4.2:在任务列表中获得当前任务的起点;步骤4.3:判断是否有空闲agv,如果没有则等待空闲agv;步骤4.4:如果有空闲agv,则判断是否有多个空闲agv;步骤4.5:如果当前仅有1辆空闲agv,则选择该agv执行任务;步骤4.6:如果当前空闲agv数量大于1,则通过弗洛伊德算法建立的距离矩阵,计算出所有空闲agv到达任务起点的距离;步骤4.7:选择计算距离最近的空闲agv执行此条任务;步骤4.8:如果距离最近的空闲agv数量大于1,则选择编号最小的agv去执行任务。步骤5:动态规划agv执行路线,避开被占用的节点,使执行任务的agv可达到任务起点,其流程如图2所示;骤5.1:从相邻节点中选择一个曾经未走过的节点或者距离上次走过时间间隔最长的节点;步骤5.1.1:将agv当前位置标记为1,其余相邻的工作节点标记为0;步骤5.1.2:当agv选择移动时候,将相邻的工作节点都减1,然后将下一个即将去的节点再改为1;步骤5.1.3:选择距离上次走过时间间隔最长的节点即数值最小的节点为下一个走的节点;步骤5.1.4:如果满足条件的点很多,则通过权利要求1所述的邻接矩阵和距离矩阵计算agv到达相邻未被占用节点的距离与相邻节点到达任务起点的距离之和;步骤5.1.5:选择距离之和最短的节点走,此时在选择的同时将下一步要走的节点标记为已占用。步骤5.2:判断步骤5.1得到的工作节点是否被agv占用,如果被agv占用,则判断占用的agv是否有在执行任务;步骤5.3:如果占用的agv处于空闲状态,则随机在未被占用的可达的点里选择一个工作节点让空闲agv去执行,如果所有节点都不可达,则随机分配一个未被占用的点让空闲agv去执行,同时当前执行任务的agv选择步骤5.1得到的相邻工作节点移动;步骤5.4:如果占用的agv处于工作状态,则当前执行任务的agv选择一距离近的相邻节点移动;步骤5.5:如果步骤5.1得到的工作节点未被agv占用,则选择该工作节点移动。步骤5.6:重复执行步骤5.1至步骤5.5实现单步动态规划agv的执行路线,直到步骤5.1得到的相邻节点为任务起点,停止循环。步骤6:从任务起点取货后,agv重新动态规划执行路线,避开被占用的节点,到达任务终点;其中,任务终点视为步骤5中的任务起点,从取货点到达任务终点动态规划agv执行路线的过程同步骤5中的过程一致;如图6所示,选择编号为1的agv执行优先级为1的任务,从初始节点1到任务起点3取货后,往任务终点22送货,任务正在执行中;选择编号为3的agv执行优先级为3的任务,从初始节点15到任务节点14取货后,往任务终点20送货,任务正在执行中。步骤7:更新任务列表,新增工作任务,取消已经执行完成的工作任务;步骤8:重复执行步骤4至步骤7,直到任务列表为空。当前第1页12