Getting Started
Installation
To install CRCBS.jl, start up Julia and type the following code-snipped into the REPL.
julia> ] # enter package mode by typing "]"
(@v1.4) pkg> add https://github.com/kylejbrown17/CRCBS.jl.gitExample
To construct and solve a predefined multi agent path finding (MAPF) problem:
julia> using CRCBS
julia> solver = CBSSolver() # initialize a solver
CBSSolver{AStar{Float64},Float64}
low_level_planner: AStar{Float64}
logger: SolverLogger{Float64}
julia> prob = init_mapf_1() # initialize the problem
MAPF{CRCBS.CBSEnv.LowLevelEnv{FullCostModel{typeof(sum),Float64,TravelTime},PerfectHeuristic{CRCBS.var"#127#128"{Dict{Int64,Array{Int64,1}}}},GridFactoryEnvironment{MetaGraphs.MetaGraph{Int64,Float64}},DiscreteConstraintTable},CRCBS.CBSEnv.State,CRCBS.CBSEnv.State}(CRCBS.CBSEnv.LowLevelEnv{FullCostModel{typeof(sum),Float64,TravelTime},PerfectHeuristic{CRCBS.var"#127#128"{Dict{Int64,Array{Int64,1}}}},GridFactoryEnvironment{MetaGraphs.MetaGraph{Int64,Float64}},DiscreteConstraintTable}
graph: GridFactoryEnvironment{MetaGraphs.MetaGraph{Int64,Float64}}
goal: CRCBS.CBSEnv.State
agent_idx: Int64 -1
constraints: DiscreteConstraintTable
cost_model: FullCostModel{typeof(sum),Float64,TravelTime}
heuristic: PerfectHeuristic{CRCBS.var"#127#128"{Dict{Int64,Array{Int64,1}}}}
, CRCBS.CBSEnv.State[CRCBS.CBSEnv.State(1, 0), CRCBS.CBSEnv.State(4, 0)], CRCBS.CBSEnv.State[CRCBS.CBSEnv.State(13, 0), CRCBS.CBSEnv.State(16, 0)])
julia> solution, cost = solve!(solver,prob) # solve it
(LowLevelSolution:
T: 0 1 2 3
1: [1 5 9 13 ]
2: [4 8 12 16 ]
, 6.0)
julia> optimal_status(solver) # check if the problem was solved optimally
trueIf you want to build your own MAPF problem from scratch:
# copied from CRCBS/scripts/mapf_demo.jl
using CRCBS
## set up the environment
vtx_grid = initialize_dense_vtx_grid(4,4) # 4 x 4 grid world
# 1 2 3 4
# 5 6 7 8
# 9 10 11 12
# 13 14 15 16
env = construct_factory_env_from_vtx_grid(vtx_grid)
## Define the initial conditions of the robots
starts = [1,4]
goals = [13,16]
cost_model = FullCostModel(maximum,TravelTime())
prob = init_mapf_problem(env,starts,goals,cost_model)
## define solver
solver = CBSSolver() # PIBTPlanner()
# solve the problem
solution, cost = solve!(solver,prob)
# check if the problem was solved to optimality
@show feasible_status(solver)
@show optimal_status(solver)