CBS,PCBS,ECBS,EPCBS

基于冲突的搜索算法CBS

算法思路:算法用于解决多Agent路径规划问题,框架总体上分为上层和下层
CBS上层搜索的是约束结点(CT Node),每个CT Node包含三个信息:
N.constraints:一个约束集,包含问题中对所有的Agent的约束,其中一个约束用用c=(a_i,s,t),表示任务ai在第t时刻不允许占用s元素,s可以是结点,也可以是边。
N.solution:问题的一个解,这个解可能不是有效的,一个解指的是计算出所有的Agent的路径,但是这些路径可能会存在冲突
N.cost:该结点解的代价,这个代价公式如下
在这里插入图片描述
CBS下层搜索则是单Agent搜索算法进行搜索。
CBS算法流程,即初始化上层的时候先计算出所有的Agent的解和其对应的总cost,令约束树为空,然后每一轮弹出约束树的cost最小的结点N,判断N中是否存在一个冲突,只需要找到一个即可,用(ai,aj,s,t)表示冲突,然后生成两个子结点N1,N2,并且都值传递继承N的内容,接着将冲突(ai,aj,s,t)分成约束结点(ai,s,t)和(aj,s,t),一个加入到N1约束树中,一个加入到N2约束树中,对于N1而言,ai的约束发生了变化,因此需要对ai进行重新规划,规划时需要在约束树下进行规划,最后更新ai的路径和cost值并插入到上层优先队列中Open中,接着对N2进行同样的操作,直到取出的N检测没有冲突时返回结点N即可。

并行的基于冲突的搜索算法PCBS

改进的前者缺点:由于每次取得的N都是cost最小的,忽略了其它结点发现解的可能性,它假设Open中每个结点的有效率为p,则每次展开一个结点每轮迭代找到解的概率为p,且找到解期望迭代次数E=1/p,同时,在对结点进行判断是否发生冲突,结点的分裂和重新路径规划都非常耗时,因此PCBS采用多进程的方式来加快搜索速度,由于每个结点是独立的,因此可采用多线程加快结点的展开速度。但由于是多线程,就破坏了结点绝对从最小cost先展开的特性,所以求出的是次优解。于是就有PCBS(n,w)用n个线程来求解多Agent路径规划问题,保证PCBS求出的解的代价和最优解的代价比值不超过w,w>=1;
那么为了做到近似最优,PCBS用一个表BE来登记正在被拓展的结点,当一个线程准备从Open中取出最小结点进行拓展时,取出的这个结点的cost必须要小于等于正在被拓展结点中最小cost的w倍,即N.cost≤w×cost_min否则不允许当前线程取结点进行拓展。

增强基于冲突的搜索算法ECBS

该算法主要改进了上下层的搜索算法,CBS算法在下层进行路径规划搜索时比较盲目,只需要找出一条满足当前的约束树的路径即可,这种盲目的搜索容易导致规划出的路径再次出现新的冲突,因此,ECBS在CBS的框架基础上对上下层进行了搜索改进,采用了聚焦搜索技术。
对于下层来说,拿A* 算法举例,A* 每次都是从open_list中取出代价最小的结点进行拓展,因此不能保证这个结点是否会发生新的冲突,采用聚焦搜索后,A* 则是每次取出一个更不容易发生冲突的结点进行拓展,这就大大减小了冲突频率,提高了搜索效率和减少算法空间占用。如何选择更不容易发生冲突的结点,EECBS采用聚焦搜索的A*算法,引入评价函数
在这里插入图片描述
在open_list中还是按照代价函数来排序,然后不断将open_list中代价f≤wf_min的结点加入到Foca_list中,f_min是open_list中代价最小值,, w是允许和最优解最大误差系数,但是Focal_list则是按照h ̂_F (s)升序排列,在进行结点拓展的时候,从Focal_list取出h ̂_F (s)最小的结点进行拓展。因为每次取出的结点代价都大于或等于f_min,所以确定了下层最优解的下界,与此同时上层的下界为
在这里插入图片描述
即所有的Agent的下界和
对于上层,同样使用聚焦搜索,类似的,引入一个评价函数
H ̂_F (s)=N.solution中发生冲突的元素的总数
将Open中代价cost≤wLB_min的结点加入到Focal中,LB_min表示Open中上层下界最小值,Focal按照H ̂_F (s)进行排序,每次取出H ̂_F (s)最小的结点进行拓展。

增强并行的基于冲突的搜索算法EPCBS

同样在ECBS基础上引入一个系数w,与PCBS类似,采用多线程来进行搜索,但由于采用了聚焦搜索,所以需要额外一个线程将将Open中的结点加入Focal中,这个线程的作用除了负责将代价符合条件的结点从Opne中加入Focal中之外,还负责在检测Agent之间冲突的时候进行随机检测,因此每次处理的冲突都不是按Agent的id和路径的顺序来检测的,增强随机性,满足了相互独立。

  • 6
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值