Skip to content

Latest commit

 

History

History
98 lines (73 loc) · 5.13 KB

README.md

File metadata and controls

98 lines (73 loc) · 5.13 KB

SymbolicPlanners.jl

Documentation (Stable) Documentation (Latest) GitHub Workflow Status GitHub release (latest SemVer) License

Symbolic planners for problems and domains specified in PDDL.

Installation

Make sure PDDL.jl is installed. For the stable version, press ] to enter the Julia package manager REPL, then run:

add SymbolicPlanners

For the latest development version, run:

add https://github.com/JuliaPlanners/SymbolicPlanners.jl

Features

  • Forward state-space planning (A*, BFS, etc.)
  • Backward (i.e. regression) planning
  • Policy-based planning (RTDP, RTHS, MCTS, etc.)
  • Relaxed-distance heuristics (Manhattan, hadd, hmax, etc.)
  • Policy and plan simulation
  • Modular framework for goal, reward and cost specifications
  • Support for PDDL domains with numeric fluents and custom datatypes

Usage

A simple usage example is shown below. More information can be found in the documentation.

using PDDL, PlanningDomains, SymbolicPlanners

# Load Blocksworld domain and problem
domain = load_domain(:blocksworld)
problem = load_problem(:blocksworld, "problem-4")

# Construct initial state from domain and problem
state = initstate(domain, problem)

# Construct goal specification that requires minimizing plan length
spec = MinStepsGoal(problem)

# Construct A* planner with h_add heuristic
planner = AStarPlanner(HAdd())

# Find a solution given the initial state and specification
sol = planner(domain, state, spec)

Planners

Heuristics

Specifications

Performance

After Julia's JIT compilation, and using the same search algorithm (A*) and search heuristic (hadd), SymbolicPlanners.jl with the PDDL.jl compiler is (as of February 2022):

  • 10 to 50 times as fast as Pyperplan,
  • 0.1 to 1.2 times as fast as FastDownward,
  • 0.7 to 36 times as fast as ENHSP on numeric domains without action costs.

A comparison on domains and problems from the 2000 and 2002 International Planning Competitions is shown below. Runtimes are relative to SymbolicPlanners.jl using the PDDL.jl compiler. In each cell, we report the first quartile (Q1), median (M), and third quartile (Q3) across solved problems. Experiment code is available here.

Runtime comparison for SymbolicPlanners.jl vs. Pyperplan, FastDownward and ENHSP