显式估计的基于冲突的搜索算法(EECBS)(4)


ECBS的两个缺点:

1.容易陷入局部搜索,当结点N在进行扩展的时候,N的cost会逐渐增大,hc的值逐渐减小,当cost增大到一定程度且不满足次优界限时,算法会接着搜索cost比N小一点,hc比N大一点的下个节点,如此循环直到找到解,这中cost和hc的负相关性会导致聚焦搜索反复放弃节点的扩展,卡在局部区域,永远没有机会探索其它部分。

2.在进行扩展中,节点的冲突数不断减少,代价逐渐增加,导致次优的节点的hc的值较大,而Focal中每次都是选取hc小值进行扩充,因此,次优节点想要扩充到需要等到Focal中的节点快清空,但是由于一般会存在很多cost值差不多的节点,因此Focal很难清空,这就导致次优解一直得不到消耗,从而使上层的最优解下界几乎不怎么增加,这就使得整个计算不能保证在合理的时间范围内计算完成。

缺点1和2都涉及到负相关性,缺点很相似,但是一个是涉及成本,一个是涉及下界。

ECBS中函数定义:

N表示上层节点,n表示下层节点;

表示当前节点的状态和其它Agent发生了冲突的Agent数量;

表示节点N中的路径中的冲突数;

两者共用一个公式:

 

 

表示节点N的最优解下界;

 

 

标准A*算法的启发式

 

 

表示节点N的所有Agent的路径cost之和;

 在下层,按d(n)排序,在上层hc(N)按排序。

Explicit Estimation Search (EES)

EES是一种有界次优搜索算法,它解决了聚焦搜索因为负相关导致的一些问题。

ESS引入了第三个函数f^用来估计当前给定节点的解决方案的成本,结合了对cost和hc和估计,用来预测展开哪些次优节点能更快找到解决方案。如果当前次优内的节点都不满足扩充条件,则它通过最小的f值来提高当前的边界。

ESS需要维护三个列表:CLEANUP , OPEN和 FOCAL

CLEANUP是A*算法中一个有序队列,按照启发式f进行排序,OPEN是A*算法另外一个有序队列,按照评估函数f^来排序,FOCAL中的从OPEN中选取,并且要满足f^<=w*f^(bestf^),其中fˆ(N) =cost(N) + hˆ(N),这里的 hˆ(N)指的是cost-to-go;

。。。

Explicit Estimation CBS(EECBS)


上层中,需要维护三个列表:

CLEANUP:按照函数lb进行排序

OPEN:按照代价函数f^进行排序,这个函数估计了CT节点以下的解决方案的最小成本,fˆ(N) =cost(N) + hˆ(N)

FOCAL:包含OPEN中所有满足fˆ(N)≤w·fˆ(best)的节点,并按照hc进行排序

EECBS选择节点的规则如下:

if cost(besthc)<=w lb(bestlb) ,then select besthc from FOCAL

else if cost(bestf^)<=w lb(bestlb) ,then select bestf^ from OPEN

else select bestlb from CLEANUP

在线学习,求解hˆ(N)

步距误差公式:

成本误差公式:

 

 

 bc(n)表示子节点中f^最小的节点;

c(n,bc(n))表示从节点n移动到bc(n)的cost;

因为在EECBS中没有可接受成本h(n),所以需要对公式修改;

在EECBS中被定义如下:

 

 

 注释:bc(N)表示节点N中最优子节点,在N的所有子节点中,cost最小为最优子节点,若cost相同,则冲突数hc最小的为最优子节点。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM