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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | df2e8088071a269b20bccde416c00720604ddcb116a9c5b52359ed05dadba73e |
|
MD5 | e018ebcae7e145b667b8276499495965 |
|
BLAKE2b-256 | 13e4bca7d437ebfeda337b79b72162382334a0b6cf696731940548e44514a082 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 619a036f1d2dad292706c9aa6b774897e6268ad6f7507e74a8b4fa3e0ea37157 |
|
MD5 | a486d8752e31ba76f141151bbc719df2 |
|
BLAKE2b-256 | 067fab08afea5d8920cd329d64f43a680ad8d3009e8d1031c108d098a270e5ee |