Kei18 / pibt2

Priority Inheritance with Backtracking for Iterative Multi-agent Path Finding (AIJ-22)
https://kei18.github.io/pibt2/
MIT License
54 stars 25 forks source link

question about distable #11

Closed ShuaiZhou302 closed 3 months ago

ShuaiZhou302 commented 3 months ago

Hello sir sorry to bother you again In your pypibt, you used bfs to generate distable First question is: I wonder if you still using it in the C++ pibt2 when i check solver.cpp, you are using bfsto generate distable too. but when i run my reproduction code(which is confirmed no problem) in python, it is very slow in generating distable part when i use ost003d.map this kinds of big size map in (mapf benchmark){https://movingai.com/benchmarks/mapf/index.html} it's fast in searching process still, the other parts is ok. about 40ms averagely

and my second question is based on first. if you are not using bfs, what did you use. if you still using bfs , is the slow generating process just the difference between python and C++, or you have the same problem, but it doeson't counted on runtime for it is not part of searching process.

Thank you so much if you could respond to me! and thanks again! for your earlier kind answer.

Kei18 commented 3 months ago

Hi,

Calculating the distance table is a necessary overhead; even with C++, this process can take time compared to running PIBT itself. So Python may suffer more from this.

An alternative is to use A (or other pathfinding methods) to compute the distance-to-go on demand, according to the query of the vertex evaluation in PIBT. But I do not recommend this strategy for speed reasons. You can also check RRA (same paper as HCA*).

Overall, simple BFS is the fastest way in my experience...

Best, Keisuke

ShuaiZhou302 commented 3 months ago

Thank you!