The unified_planning library makes it easy to formulate planning problems and to invoke automated planners.
- Define problems in a simple, intuitive, and planner independent way
- Solve your planning problems using one of the native solvers, or by using any PDDL planner
- Dump your problems in PDDL (or ANML) format
- Parse PDDL problem formulations
- Simplification, grounding, removal of conditional effects and many other transformations are available
- and more...
from unified_planning.shortcuts import *
x = Fluent("x")
a = InstantaneousAction("a")
a.add_precondition(Not(x))
a.add_effect(x, True)
problem = Problem("basic")
problem.add_fluent(x)
problem.add_action(a)
problem.set_initial_value(x, False)
problem.add_goal(x)
with OneshotPlanner(problem_kind=problem.kind) as planner:
result = planner.solve(problem)
if result.status in unified_planning.engines.results.POSITIVE_OUTCOMES:
print(f"{planner.name} found this plan: {result.plan}")
else:
print("No plan found.")
The documentation is available here
More complex live demos are available as notebooks here.
This library is being developed for the AIPlan4EU H2020 project (https://aiplan4eu-project.eu) that is funded by the European Commission under grant agreement number 101016442.