A repository of PDDL domains and problems.
Author JuliaPlanners
6 Stars
Updated Last
1 Year Ago
Started In
February 2022


A (meta)-repository of PDDL domains and problems. The following repositories are supported:



To list the domains provided by a repository, run list_domains:

4-element Vector{String}:

To list the problems in a domain, run list_problems:

julia> list_problems(JuliaPlannersRepo, "blocksworld")
9-element Vector{String}:

Some repositories also organize domains into collections. We can list collections via list_collections, and list domains in a particular collection via list_domains:

julia> list_collections(IPCInstancesRepo)
8-element Vector{String}:

julia> list_domains(IPCInstancesRepo, "ipc-2000")
12-element Vector{String}:


To load a domain, specify the repository and domain name as arguments to load_domain. To load a problem, specify either the problem name or its index:

domain = load_domain(JuliaPlannersRepo, "blocksworld")
problem_1 = load_problem(JuliaPlannersRepo, "blocksworld", "problem-1")
problem_2 = load_problem(JuliaPlannersRepo, "blocksworld", 2)


Collections, domains and problems can also be searched for using find_collections, find_domains, and find_problems, by providing a (sub)string or regular expression as a query:

julia> find_collections(PlanningDomainsRepo, "Fast")
2-element Vector{String}:
 "9-Fast Downward All Problem Suite"
 "10-Fast Downward LM-Cut Problem Suite"

julia> find_domains(PlanningDomainsRepo, "blocks")
3-element Vector{String}:

julia> find_problems(PlanningDomainsRepo, "112-blocks", r"BLOCKS-4-\d.pddl")
3-element Vector{String}:

Default Repository

All of the above functions can also be called with the first argument omitted, and with the domain name specified as a Symbol, in which case the default repository (JuliaPlannersRepo) will be assumed. Note that underscores in symbols will automatically be converted to hyphens:

# The following two functions load the same domain
load_domain(JuliaPlannersRepo, "doors-keys-gems")

# The following two functions load the same problem
load_problem(:zeno_travel, 1)
load_problem(JuliaPlannersRepo, "zeno-travel", 1)

Cache Management

For repositories hosted online, PlanningDomains.jl maintains a local cache to reduce load times. However, this cache is not automatically updated if the remote repositories change. To manually clear the cache for a particular repository use PlanningDomains.clear_cache!. To clear all caches, use PlanningDomains.clear_all_caches!.

Used By Packages

No packages found.