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 fˆ)的節點,並按照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最小的為最優子節點。
