发布时间:2022-12-20 浏览量:
随着柔性制造系统的广泛应用, 国内对自动导引车的需求量也渐渐增长。在整个自动化仓储物流中, AGV运输成本占总成本比重较高, 仓储任务的精准调度以及AGV良好的路径规划策略, 对提高物流作业效率、降低运输成本有重要意义。
针对多AGV的路径寻优问题, 刘国栋等
对AGV路径规划中路径成本最优化以及调度效率问题, 提出一种基于优先级队列和时间窗动态排序的路径规划方法。首先构建任务优先级队列, 然后用A-Star算法启发式搜索路径, 通过对节点时间窗进行精确计算和加锁, 实现了多AGV的路径实时规划和动态调优, 在无碰撞冲突条件下保证了仓储物流路径成本最低, 而且提高了系统运行效率。
本文所考虑的是自动化仓储物流中AGV群体运动规则问题, 根据其所在的仓储环境采用拓扑建模法构建地图, 并作以下假设:
(1) 相邻节点间的路线为单行道可双向行驶。
(2) AGV在4个方向上以同一速度匀速行驶, 且转向速度固定;
(3) AGV间安全制动距离为0.8m;
(4) AGV共有4种状态:无任务静止状态 (包括充电状态) , 有任务待负载行驶状态, 负载搬运状态, 临时等待状态。
图1 仓储环境下拓扑地图 下载原图
针对AGV仓储物流环境, 建立拓扑地图, 如图1所示, 在有向连接网络G=<V, E>中, V代表网络中节点的集合V={v1, v2, …, vn}, E代表网络中边的集合E={e1, e2, …, em}, 且每条边可以用相邻节点有序对来表示:
多AGV路径规划的目的是规划出一条时间代价最小的路径。AGV在仓储环境中的耗时分为到达装载点时间, 搬运状态时间和避障等待时间, 分别设为的tk、carrytk和Ωk。因此所有AGV的时间代价之和可由以下公式得到:
其中, k为仓储任务的编号。
(1) 亟待充电且携带任务, 将已分配的任务作为高优先级重新分配, 然后将充电任务作为中优先级重新分配;
(2) 亟待充电且无任务无负载, 将充电任务作为中优先级重新分配;
(3) 一般性实时任务作为低优先级分配;
(4) 同一优先级按照FCFS方法分配。
(1) 相向相遇冲突。如图2所示, 相向行驶的两辆车相遇;
图2 相向冲突示意图 下载原图
(2) 垂直相遇冲突。如图3所示, 垂直方向的两辆车在节点相遇;
图3 垂直相遇冲突示意图 下载原图
(3) 占位冲突 (车辆空闲) 。如图4所示, 前方因AGV空闲停车阻止了其他车的前进。
图4 占位冲突1示意图 下载原图
(4) 占位冲突 (故障) 。如图5所示, 前方因故障停车阻止了其他车的前进。
图5 占位冲突2示意图 下载原图
(5) 追尾冲突 (超速) 。如图6所示, 即将赶超。
图6 追尾冲突示意图 下载原图
如图1所示, 在有向连接网络G= (V, E) 中, 假设有x辆车参与任务执行, 那么任务的AGV集合为A={a1, a2, …, ax}。所有任务的起点、终点都不同, 那么任务的起点集合和终点的集合分别记为S和D, 且SV, DV。那么自动导引车所经过节点的时间窗可以定义为:
式中, tiin表示自动导引车保留节点i的时间, tiout表示自动导引车释放节点i的时间, i∈V。如图7时间窗模型图所示, 一个任务Wk的时间窗可以描述为Wk={w1, w2, w3, w4}={[t1, t2], [t3, t4], [t5, t6], [t7, t8]}。
图7 节点保留时间窗模型图 下载原图
为了保障仓储物流过程的安全性, 需要对时间窗进行精准计算, 如图7所示。设AGV到达节点i的时间为ti, 则有公式:
其中, tb为车辆安全制动时间, te为允许最大误差时间, 包括在节点处突发断电及故障引起的制动误差。
如图8所示, 设AGV车身的长度为l, AGV直行通过节点时, 则有公式:
其中, vst是小车统一默认的直行速度。
图8 自动导引车通过节点i示意图 下载原图
如图9所示, 当AGV在节点处转弯时, 则有:
其中, vtu是小车转弯通过节点的速度。
图9 自动导引车转弯通过节点i示意图 下载原图
在进行多AGV路径寻优时, 采用拓扑建模法构建仓储电子地图, 且携带任务的AGV在运行过程中可双向行驶。将一个仓储搬运任务定义为:
其中, PQk表示第k个任务的实时优先级, 参数越大优先级越低;btk表示第k个任务的开始时间;Sk和Dk分别表示第k个任务的装载点和卸载点, 且Sk∈V、Dk∈V;枚举类型的参数LBk (t) 表示第k个任务的搬运状态, 如公式 (8) 所示。
给任务分配不同的优先级PQ:如图10所示, 将任务队列划分为高中低三个优先级队列, 分别用PQh、PQm和PQl来表示。
(1) 当LBk (t) =0时, 小车正在去装载点的路途中, 即当有任务无负载的AGV小车亟待充电或突发断电等故障时, 已安排的任务的需要重新分配, 将该任务carryk (t) 放入高优先级队列, 将充电或维修任务放入中优先级队列;
(2) 当LBk (t) =1时, AGV在装载点Sk和目的地Dk之间, 即有任务有负载的AGV亟待充电或突发断电等故障时, 已安排的任务的需要重新初始化, 因为装载点Sk已经改变, 然后将新任务carryk (t) 放入高优先级队列, 将充电或维修任务放入中优先级队列;
(3) 把一般性实时任务放入低优先级队列。
图1 0 三叉堆优先级队列示意图 下载原图
首先我们用A-Star算法
体现在冲突一:后续的长任务需要不断地寻找次优路线;体现在冲突二:后续的长任务需要不断地负载等待。二者都容易造成任务饥饿, 会降低调度系统的效率。
我们有了任务的优先级分配和时间窗的计算, 下面来介绍路径规划算法的具体实现步骤, 如图11所示。
(1) 根据上位机系统管理员输入仓储物流参数, 将任务划分优先级, 插入优先级队列, 并初始化多个运输任务, carryk (t) ={PQk (t) , btk, Sk, Dk, LBk (t) }。
(2) 按照任务的优先级顺序进行车辆调度:选用离装载点
(3) 用A-Star算法对路径进行启发式搜索, 得到临时的最短行驶路径。
(4) 计算小车到达每个路径节点的时间ti, 然后根据公式 (4) ~式 (6) 计算出自动导引车保留节点i的时间tiin和自动导引车释放节点i的时间tiout。
(5) 初始化节点时间窗Wk, 如果存在任务p和q使Wp∩Wq≠Ø, 说明节点时间窗因尚未加锁而出现重叠现象, 即在的某个保留时间窗内出现了其他车辆[
(6) 根据重叠时间窗和拓扑地图, 来确定将会发生哪种节点冲突, 然后对每个节点的时间窗加锁。如果存在如图2所示的冲突一相向相遇冲突
(7) 生成可执行任务 (指定AGV, 明确路线) , AGV执行完任务空闲后, 由于该AGV可能成为其他任务的障碍, 所以要优先派发该车辆。重复执行步骤 (1) 等待管理员动态分发新需求。
图1 1 AGV路径规划算法流程图 下载原图
考虑其他三种冲突, 任务执行过程中, 对于冲突三, 那么将更改此空闲AGV所占有的节点周围四条边的权重为无穷大, 修改任务的起始点, 执行算法中的步骤 (3) ;对于冲突四, 可能为突发断电 (非亟待充电提醒) 或机械老化等故障, 需要人工维修或清除, 然后更新可用AGV信息;对于冲突五, 由于环境中假设AGV速度相同, 所以不会出现赶超冲突, 即使在前面的AGV制动减速的时候也不会出现赶超冲突, 因为在计算时间窗时, AGV制动时间tb已经被保留在时间窗内。
使用Visual Studio 2015作为仿真开发平台, 编写调度程序对提出的路径寻优算法进行验证。选取某仓储物流中心如图1拓扑地图所示, 仓储区域长30m, 宽30m, 仓储节点36 (不包括充电区域) , 144个货架, 14条车道纵横交错, AGV直行速度为0.5m/s。转向时间固定为2s。
设计两组仿真对比实验:一组是无时间窗加锁和有时间窗加锁的路径寻优结果, 另一组是不含优先级队列和含优先级队列的路径寻优结果。从两个维度来验证所提出算法的可行性和高效性。
(1) 针对第一种仿真对比实验, 我们分别初始化三个任务:
首先根据任务的预估时间来初始化优先级, 时间越长, PQk (t) 数字越小, 优先级越高。
无时间窗加锁的情况如图12所示, 执行任务carry1 (t) 的车辆将会与执行carry3 (t) 的车辆在b1到c1路段发生相向相遇冲突, 执行任务carry1 (t) 的车辆将会与执行carry2 (t) 的车辆在c3节点发生垂直
图1 2 无时间窗加锁含优先级路径寻优结果 下载原图
含时间窗加锁的情况如图13所示, 由于经过时间窗的重新排布, 任务carry3 (t) 已经重新规划路线, 有效避免与任务carry1 (t) 相向相遇冲突, 且在节点c2进行等待规避, 避免垂直相遇冲突, 任务carry3 (t) 将会在节点c3处进行规避等待, 有效避免死锁和碰撞
图1 3 含时间窗加锁含优先级路径寻优结果 下载原图
(2) 针对第二种仿真对比实验, 在不含优先级的算法中我们分别初始化三个任务, 这里PQk (t) 均为1, 即:
算法执行过程如图14所示。
图1 4 含时间窗加锁不含优先级路径寻优结果 下载原图
考虑图13和图14所示的两种仿真执行过程, 对不含优先级和含优先级的两种调度算法进行路径代价对比, 如表1和表2所示。根据目标函数公式计算出:含优先级的调度算法路径成本Cost小于不含优先级的调度算法。
对多AGV路径寻优和调度效率问题, 提出基于优先级队列和时间窗模型的调度算法。在多AGV动态路径寻优中, 解决了多AGV的碰撞冲突问题, 而且通过构建任务优先级队列优先级优化了调度顺序, 不仅保证了路径最优, 而且可以避免任务饥饿与死锁。最后通过仿真实验得出, 算法在保证车辆无碰撞的条件下可使AGV路径成本最低, 同时提高了任务和车辆调度的效率。