Skip to main content

AI Planning as Satisfiability

Project description

planning_sat

AI Planning as Satisfiability

About

This library implements Planning as Satisfiability that can be used to solve STRIPS-like AI Planning Problems using PDDL. When passed the domain and problem representations in PDDL, the library returns Satisfiability and the model if it is satisfiable and None otherwise.

Documentation

If you are interested in understanding the details, please read my post at TBD

Installation

pip install planning_sat

or, you can clone this repository

Example

PDDL for representing planning domain and problem

The Dock-Worker Robots Domain and Problem are provided in the domain directory. There are also Simple Domain and Problem in the same directory. You can create your PDDL files, or you can download them from the internet.

Use as a CLI Script

You can execute the script directly by passing it the required arguments which are:

  • path to the domain file
  • path to the problem file
  • length of plan

example:

python3 davis_putnam.py -d domain/simple-domain.pddl -p domain/simple-problem.pddl -l 1 -f

Including the library in your project

If you want to include the library in your project, you can install it with pip. The steps are simple:

  • Create an encoder object which will encode the Planning Problem to a boolean (propositional) formula in CNF (Conjunctive Normal Form)
  • Create a DPLL object which will run Davis–Putnam–Logemann–Loveland algorithm over the encoded problem to determine whether it is satisfiable or not
import planning_sat.encoder as encoder
from planning_sat.davis_putnam import DavisPutnam

domain_file = "domain/simple-domain.pddl"
problem_file = "domain/simple-problem.pddl"
encoder = encoder.PlanningProblemEncoder(domain_file, problem_file, length=1)
davis_putnam = DavisPutnam()
satisfiable, model = davis_putnam(encoder.propositional_formulas)

pddlpy

pddlpy included in this repo is the work of Hernán M. Foffani, it is copied from here.

Issues

Please report issues if you found bugs or raise a Pull Request.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

planning_sat-0.0.2.tar.gz (43.8 kB view details)

Uploaded Source

Built Distribution

planning_sat-0.0.2-py3-none-any.whl (53.1 kB view details)

Uploaded Python 3

File details

Details for the file planning_sat-0.0.2.tar.gz.

File metadata

  • Download URL: planning_sat-0.0.2.tar.gz
  • Upload date:
  • Size: 43.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.5

File hashes

Hashes for planning_sat-0.0.2.tar.gz
Algorithm Hash digest
SHA256 df2e8088071a269b20bccde416c00720604ddcb116a9c5b52359ed05dadba73e
MD5 e018ebcae7e145b667b8276499495965
BLAKE2b-256 13e4bca7d437ebfeda337b79b72162382334a0b6cf696731940548e44514a082

See more details on using hashes here.

File details

Details for the file planning_sat-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: planning_sat-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 53.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.5

File hashes

Hashes for planning_sat-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 619a036f1d2dad292706c9aa6b774897e6268ad6f7507e74a8b4fa3e0ea37157
MD5 a486d8752e31ba76f141151bbc719df2
BLAKE2b-256 067fab08afea5d8920cd329d64f43a680ad8d3009e8d1031c108d098a270e5ee

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page