The code repository of the paper "Fault-Tolerant Offline Multi-Agent Path Planning" (MAPPCF; AAAI-23). The entire code is written in Julia 1.7.
julia --project=. -e 'using Pkg; Pkg.instantiate()'
It may require around 5min.
A toy example is available on Jupyter Lab.
julia --project=. -e "using IJulia; jupyterlab()"
See notebooks/toy-example.ipynb
.
You will eventually get the following:
- (first) Solution example. Each agent has a backup path as necessary.
- (second) Execution demo. A red agent is crashed in the middle (turning to a diagonal shape, gray-filled). The left-blue agent changes its executing path.
julia --project=. --threads=auto
> include("scripts/benchmark_gen.jl")
> create_benchmarks()
The used instances are included in assets/benchmark.zip
.
Please unzip them to ../data/benchmark/
.
random-32-32-10
julia --project=. --threads=auto
> include("scripts/eval.jl")
# sync
> main("scripts/config/exp/exp1_sync_fix_crash.yaml")
> main("scripts/config/exp/exp1_sync_fix_agent.yaml")
# seq
> main("scripts/config/exp/exp1_seq_fix_crash.yaml")
> main("scripts/config/exp/exp1_seq_fix_agent.yaml")
random-64-64-10
julia --project=. --threads=auto
> include("scripts/eval.jl")
# sync
> main("scripts/config/exp/exp2_sync_fix_crash.yaml")
> main("scripts/config/exp/exp2_sync_fix_agent.yaml")
# seq
> main("scripts/config/exp/exp2_seq_fix_crash.yaml")
> main("scripts/config/exp/exp2_seq_fix_agent.yaml")
appendix; Paris_1_256
julia --project=. --threads=auto
> include("scripts/eval.jl")
# sync
> main("scripts/config/exp/exp3_sync_fix_crash.yaml")
# seq
> main("scripts/config/exp/exp3_seq_fix_crash.yaml")
appendix; warehouse-20-40-10-2-2
julia --project=. --threads=auto
> include("scripts/eval.jl")
# sync
> main("scripts/config/exp/exp4_sync_fix_crash.yaml")
# seq
> main("scripts/config/exp/exp4_seq_fix_crash.yaml")
appendix; refinement
julia --project=. --threads=auto
> include("scripts/eval.jl")
# sync, random-32-32-10
> main("scripts/config/exp/exp5_sync_fix_crash.yaml")
# seq, random-32-32-10
> main("scripts/config/exp/exp5_seq_fix_crash.yaml")
# sync, random-64-64-10
> main("scripts/config/exp/exp6_sync_fix_crash.yaml")
# seq, random-64-64-10
> main("scripts/config/exp/exp6_seq_fix_crash.yaml")
The experimental results were obtained in:
- The project name comes from MAPP with Failure Detectors (MAPPFD).
- The grid maps in
assets/map
are from MAPF benchmarks. tests/
is not comprehensive. It was used in early developments.- Auto formatting (juliaformatter.jl) when committing:
git config core.hooksPath .githooks && chmod a+x .githooks/pre-commit
This software is released under the MIT License, see LICENSE.txt.
Keisuke Okumura is a Ph.D. student at the Tokyo Institute of Technology, interested in controlling multiple moving agents.