Managing Problems using rddlrepository#
The rddlrepository:
hosts a diverse collection of domain and instance RDDL files, covering problems from a wide range of disciplines (full listing here)
includes all domains used in the probabilistic and learning track of the International Planning Competitions (2011, 2014, 2018, 2023)
is updated and expanded frequently with the help of the community
contains custom visualizers for a subset of domains, to be used with the pyRDDLGym package
provides out-of-the-box compatibility with pyRDDLGym.
Installing#
To install directly with pip:
pip install rddlrepository
The Repository Manager#
The core object for extracting problems and instances is the RDDLRepoManager
object:
from rddlrepository.core.manager import RDDLRepoManager
manager = RDDLRepoManager(rebuild=True)
Note
rebuild
instructs the manager to rebuild the manifest, which is an index
containing the locations of all domains and instances for fast access.
While you do not need this option in normal operation, in case you add your
own domains or the manifest becomes corrupt, you can force it to be recreated.
To list all domains currently available in rddlrepository:
print(manager.list_problems())
Problems are organized by context (e.g. year of the competition, standalone):
print(manager.list_context())
print(manager.list_problems_by_context("standalone")) # list all standalone problems
print(manager.list_problems_by_context("ippc2018")) # list all problems from IPPC 2018

Retrieving Specific Problems#
The information for a specific problem or domain is a ProblemInfo
instance:
problem_info = manager.get_problem("EarthObservation_ippc2018")
will load the EarthObservation domain information from the ippc2018 context.
To list all the instances of a domain:
print(problem_info.list_instances())
To return the paths of the domain and an instance (1):
print(problem_info.get_domain())
print(problem_info.get_instance("1"))
To return the pyRDDLGym visualizer class:
viz_class = problem_info.get_visualizer()

Loading Environments in pyRDDLGym#
In the introduction to pyRDDLGym, we already presented the standard way to load an environment:
import pyRDDLGym
env = pyRDDLGym.make("EarthObservation_ippc2018", "1")
This can also be done directly using rddlrepository:
problem_info = manager.get_problem("EarthObservation_ippc2018")
env = pyRDDLGym.make(domain=problem_info.get_domain(), instance=problem_info.get_instance("1"))
env.set_visualizer(problem_info.get_visualizer())

Registering your Own Problems and Instances#
To register a new context in rddlrepository for later access:
manager.register_context("MyContext")
To register a new problem in a given context for later access:
domain_content = """
domain ... {
...
}
"""
manager.register_domain("MyDomain", "MyContext", domain_content,
desc="a description of this domain", viz="ModuleName.ClassName")
Here, "ModuleName.ClassName"
refers to the Module name and the Class name of the visualizer (optional).
To register an instance for an existing domain for later access:
instance_content = """
instance ... {
...
}
"""
problem_info.register_instance("MyInstance", instance_content)
