/unified-planning

The AIPlan4EU Unified Planning Library

Primary LanguagePython

The AIPlan4EU Unified Planning Library

Actions Status Coverage Status Documentation Status PyPI version

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...

Usage

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.")

Documentation

The documentation is available here

Examples

More complex examples are available as notebooks here.

Acknowledgments

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.