Finding Optimal Solutions to Cooperative Pathfinding Problems

论文题目:Finding Optimal Solutions to Cooperative Pathfinding Problems

链接:Finding Optimal Solutions to Cooperative Pathfinding Problems| Proceedings of the AAAI Conference on Artificial Intelligence

发表于2010年,这篇文章提出了MAPF的两种方法,一种是算子分解,一种是独立性检测

相关工作

A*常用来单agent路径规划,为了让A*应用到多agent规划中,对A*进行各种变体

LRA*先单独给每个agent用A*规划好,如果发生碰撞则给涉及碰撞的agent重新规划。这一方法容易导致死锁

分层合作A*( Hierarchical Cooperative A*),该算法选择agent的顺序,并为每个agent规划一个路径,通过检查保留表来避免与以前计算的路径发生冲突。这种算法属于贪心算法,导致次优解

其他方法要么是次优并且可能造成死锁的,要么需要花费大量内存导致不能解决规模较大MAPF问题的。

问题定义

地图和常规MAPF地图定义相似,agent占据一个空格,并且可以向相邻空格移动

不同之处在于:

  • 可以对角线移动

  • 可以循环移动,如下图

单个代理路径的cost是代理到达其目标所花费的总时间步数,而整个解决方案的cost是所有路径成本的总和。

虽然可以循环移动,但不能交换位置,比如图中不能发生1和2直接交换位置的情况

算子分解

常规的方法中,由于每个agent可以在下一个时间步选择向8个方向走或者在原地stay,因此n个agent在下一个时间步对应的状态空间大小为。

常规方法每个算子将状态推进一个时间步,并改变全部代理的位置。而算子分解提出一种新的状态空间表示,其中每个时间步长被分割,使每个算子只操作该时间步中的一个agent,一个状态需要n个算子前进到下一个时间步长(n是agent数量)。

OD不是事先将每个agent的路径用A*计算好再检测碰撞,而是在每个时间步的每个算子操作过程中都实时地计算启发式的值。以下图为例,1号和2号agent的目标点在自身右侧2步的位置,黑色表示障碍物。1先进行移动,它有3个选择:向上、向右、不动,其中向右这一算子执行之后的g+h最小,于是继续探索这一算子的下一算子;下一算子对2号agent进行操作,有2种选择:像左上、向右,不能不动,因为这会导致和1号agent位置重叠......

独立子问题

一般来说,我们希望有一种算法来将代理划分为不相交的集,这样为每一组代理计算的最优路径就不会干扰其他路径。这样,我们就可以确定组合解是最优的。

为了进行划分,首先使用如下的简单独立检测SID:

  1. 将每个代理分配给一个单例组

  2. 为每个组计划一个路径

  3. 模拟执行所有路径,直到发生冲突为止

  4. 将两个相互冲突的组合并为一个组

  5. 规划新的group

  6. 重复步骤3-步骤5,直到没有冲突

改进SID:每个agent可能有多个最优路径到达target,所以如果有冲突可以先看看agent的其他最优路径是否仍然有冲突。

改进后的独立检测算法:

  1. 将每个代理分配给一个单例组

  2. 为每个组计划一个路径

  3. 用每个路径填充冲突避免表

  4. 模拟所有路径的执行,直到两组G1和G2之间发生冲突

  5. 如果这两个组之前没有冲突,用G2的当前路径填充非法移动表并为G1寻找具有相同成本的另一组路径;如果寻找失败,则用G1的当前路径填充非法移动表并为G2寻找具有相同成本的另一组路径

  6. 如果G1和G2寻路都失败,则将G1和G2合并为一组

  7. 通过对路径进行的更改来更新冲突避免表

  8. 重复步骤4-步骤7,直到没有冲突

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值