相對與CBS算法,在上層和下層中,CBS使用了一個優先列表,並且都是按照最小cost來逐個彈出,雖然能找到最優解,但是隨着Agent的數量增大,算法所消耗的時間會指數型增長,分析如下:
1.在上層中,從OPEN中彈出一個cost最小節點N,然后對N.solution[]進行遍歷檢測conflict,當找到一個沖突后進行節點擴展,並交給下層重新規划路徑,此時下層規划的路徑由於無法保證重新規划后的路徑不會重新產生新的沖突,只是盲目根據約束樹來進行盲目規划,因此導致整個算法在所搜的時候會產生大量新的沖突,導致效率比較低。
2.對於上層中的OPEN列表,其中存儲的節點屬於大節點,在進行節點沖突檢測和節點擴展時會消耗大量的資源,因此需要減少消耗的資源,提高計算效率,一個方法就是減小重新規划時再次產生沖突的可能性。
如圖為缺點1的產生原因:
增強的基於沖突的搜索算法采用了聚焦搜索,在上下層搜索中加入了FOCAL列表,該算法基本思想為,從OPEN列表中選出允許誤差的范圍內的次優解放入FOCAL中,FOCAL中根據碰撞相關的參數進行排序,每次從FOCAL中選出碰撞數較小的節點進行擴展,這樣每次進行擴展時,得出的結果都是碰撞數較少的,就能夠更快找到次優解。
詳解:
下層: