1.一种基于改进A‑Star算法的智能仓储多AGV调度方法,其特征在于,包括:S1:基于智能仓储的工作环境,使用栅格法进行环境建模,具体包括:
步骤11:依据实际的仓储工作环境,将仓库的平面地图划分为若干相同大小的栅格,标记障碍物和可通过区域,并建立栅格地图;
S2:构建评价函数并改进A‑Star算法,具体包括:
S21:构建A‑Star算法的评价函数为:
f(n)=g(n)+h(n) (1)其中,f(n)为评价函数,表示从起始节点P到中间节点n再到目标节点P的总代价值;g(n)表示为起始节点P遍历到中间节点n的代价值;h(n)为启发函数,表示当前节点n到目标节点Q的代价值;
考虑到实际仓储工作环境站位间距及AGV行进方向,确定AGV仅可在上下左右方向进行移动不能进行斜方向的移动,因此选用曼哈顿距离作为启发函数;设当前节点为(xn,yn),目标节点为(xs,ys),则启发函数为:h(n)=|xs‑xn|+|ys‑yn| (2)S22:考虑AGV转弯的代价函数,使路径寻优倾向于转弯数小的路径;设定当前节点为(xn,yn)、父节点为(xn‑1,yn‑1)和子节点为(xn+1)(yn+1),可利用节点信息对转弯进行判定;
S221:当(xn‑xn‑1)(yn+1‑yn)与(xn+1‑xn)(yn‑yn‑1)相等时,表示AGV直行通过当前节点,没有转向;
S222:当(xn‑xn‑1)(yn+1‑yn)与(xn+1‑xn)(yn‑yn‑1)不相等时,表示AGV在当前节点发生转向;
S223:设1为AGV移动一个单元格的基础代价,k表示AGV的转弯代价系数,取值范围为
0.1‑0.2,则实际代价函数g(n)为
S23:引入启发函数权重因子α进行动态调节,此时A‑Star算法的评价函数为f(n)=g(n)+α·h(n) (4)
其中,当α=0时,此时αh(n)=0,即f(n)=g(n),那么A*算法的求解结果的代价值与Dijkstra求解的代价值相同,A*算法退化成Dijkstra算法,此时f(n)搜索精度高,其结果一定是最优解,但是其搜索效率低,需要大量搜索时间;当0<α≤1,此时α·h(α)小于等于实际的代价值,随着α值增加,A*算法的求解结果的精度和时间到达最优;当α=1时,A*算法达到最优;当α>1时,此时α·h(n)大于实际代价值,随着α值增加,A*算法的搜索速度加快,所求的搜索时间少,但此时算法搜索精度差,搜索结果不一定是最优解;对于不同场景的要求,需要α取值进行灵活的调整,平衡好算法的搜索精度和时间的关系;
S3:设计改进的A‑Star算法进行模型求解,得到最优调度结果,具体包括:S31:设置起始点S0和目标点V0;
S32:初始化集合Open list和Close list;Open list表示将要搜索的路径集合,Close list表示已搜索到的有效路径集合;并将起始点S0优先放入Open list集合中;
S33:开始搜索路径;寻找栅格地图中起始点S0周围可以到达的栅格(上下左右四个),将这些栅格加入到Open list集合中,并设置它们的父节点为S0;
S34:从Open list集合中删除起始点S0,并将起始点S0放入Close list集合中;
S35:对Open list集合中所有栅格节点进行实际距离g(n)的计算,以及每个节点到目标点估计函数α·h(n)的计算,将二者相加得到下一节点到目标点的估计距离f(n);
S36:从Open list集合中选择f(n)值最低的栅格i,将其从Open list集合中删除,放入到Open list集合中;
S37:检查栅格i所有临近并且可达的栅格,不考虑障碍物和Close list集合中的栅格;
S371:如果这些栅格还不在Open list集合中的话,将它们加入到Open list集合,并且计算这些栅格的f(n)值,并设置父节点为i;
S372:如果某相邻的栅格j已经在Open list集合中,计算新的路径从S0到达栅格j(即经过i的路径)的g(n)值;如果新的g(n)值更低,则修改父节点为栅格i,重新计算f(n)值,h(n)值不需要改变;如果新的g(n)值比较高,则说明新的路径消耗更高,则值不做改变;
S38:继续从Open list集合中找出f(n)值最小的,从Open list集合中删除,添加到Close list集合中,再转至步骤7;
S39:结束判断:当Open list集合中出现目标点V0时,说明路径已经找到;当Open list集合中没有了数据,则说明没有合适路径。