有朋友最近在研究AGV的调度问题。让我帮忙进行一些程序的开发。顺着他的描述发现了一个很有意思的课题--多智能体路径规划(MAPF)。也顺便了解了该了一下相关信息。
在现代物流行业中,仓储方式不断发生改变。 从最开始的人力+地面平库,然后随着机械化推广,变为了叉车+高货架平库,再接着自动化设备获得快速发展,空间利用率更高的立体库出现了,相关的设备有堆垛机,AGV,AMR与CTU等。而比立体仓库空间利用率更高的便是密集存储仓库了,相关设备有多层穿梭车库,子母穿梭车库与四向穿梭车库等。
上述的设备中,绝大部分的设备都是有轨的,或者活动区域确定,多个单体设备之间,活动区域不重复的,这些设备的调度相对简单,仅仅是下发任务指令(如任务起始地址,任务结束地址,任务动作,任务编码等)便可以完成设备的调度。
但有些设备,为了追求更高的灵活度与柔性配置,其活动区域是公共区域,这时候公共区域内多个设备的调度便成了一个问题。智能分拣车,AGV与四向穿梭车便是这种情况。此类设备的调度难度相对于其他设备是较高的,尤其是同一空间内,设备数量较多时,如何让它们不会冲突,不会死锁,同时又合理有序的分配并完成多个任务,是一个非常有意思的课题。
在以前学习算法的时候,学习过比较基本的基于贪心思想的广度优先(BFS)路径规划算法。大概温习下,通过该算法实现一个简单路径规划的程序。
如下图所示,假设红色为AGV,浅绿色为AGV可移动轨道,深绿色为规划路径,箭头为在该路径上的移动方向。
该算法基于最简单的广度优先实现。在算法性能上,没有优势,不过得益于现在计算机性能的提升,当地图规模不大时,可以很快得到想要的结果。
后续会探究如果对该单体路径规划算法进行优化,并结合一定策略实现区域内多智能体路径规划。