Jupyddl is a PDDL planner built on top of a Julia parser
Project description
PyJulia PDDL Planner
A Python wrapper using JuliaPy for the PDDL.jl parser package and implementing its own planners.
Features
- Easy to use API for exploring new states
- Depth First Search
- Breadth First Search
- Dijkstra
- A*
- Goal Count Heuristic
Dependencies
-
Install Python (3.7.5 is the tested version)
-
Install Julia
$ wget https://julialang-s3.julialang.org/bin/linux/x64/1.5/julia-1.5.2-linux-x86_64.tar.gz
$ tar -xvzf julia-1.5.2-linux-x86_64.tar.gz
$ sudo cp -r julia-1.5.2 /opt/
$ sudo ln -s /opt/julia-1.5.2/bin/julia /usr/local/bin/julia
- Install Julia dependencies
$ julia --color=yes -e 'using Pkg; Pkg.add(Pkg.PackageSpec(path="https://github.com/APLA-Toolbox/PDDL.jl"))'
$ julia --color=yes -e 'using Pkg; Pkg.add(Pkg.PackageSpec(path="https://github.com/JuliaPy/PyCall.jl"))'
- Install Python dependencies
$ python3 -m pip install --upgrade pip
$ python3 -m pip install jupyddl
REFL Mode
- Run
python3
in the terminal. - Use the AutomatedPlanner class to do what you want:
from jupyddl import AutomatedPlanner # takes some time because it has to instantiate the Julia interface
apl = AutomatedPlanner("data/domain.pddl", "data/problem.pddl)
apl.initial_state
<PyCall.jlwrap PDDL.State(Set(Julog.Term[row(r1), column(c3), row(r3), row(r2), column(c2), column(c1)]), Set(Julog.Term[white(r2, c1), white(r1, c2), white(r3, c2), white(r2, c3)]), Dict{Symbol,Any}())>
actions = apl.available_actions(apl.initial_state)
[<PyCall.jlwrap flip_row(r1)>, <PyCall.jlwrap flip_row(r3)>, <PyCall.jlwrap flip_row(r2)>, <PyCall.jlwrap flip_column(c3)>, <PyCall.jlwrap flip_column(c2)>, <PyCall.jlwrap flip_column(c1)>]
apl.satisfies(apl.problem.goal, apl.initial_state)
False
apl.transition(apl.initial_state, actions[0])
<PyCall.jlwrap PDDL.State(Set(Julog.Term[row(r1), column(c3), row(r3), row(r2), column(c2), column(c1)]), Set(Julog.Term[white(r2, c1), white(r1, c1), white(r3, c2), white(r2, c3), white(r1, c3)]), Dict{Symbol,Any}())>
path = apl.breadth_first_search() # computes path ([]State) with BFS
print(apl.get_state_def_from_path(path))
[<PyCall.jlwrap PDDL.State(Set(Julog.Term[row(r1), column(c3), row(r3), row(r2), column(c2), column(c1)]), Set(Julog.Term[white(r2, c1), white(r1, c1), white(r3, c2), white(r2, c3), white(r1, c3)]), Dict{Symbol,Any}())>, <PyCall.jlwrap PDDL.State(Set(Julog.Term[row(r1), column(c3), row(r3), row(r2), column(c2), column(c1)]), Set(Julog.Term[white(r2, c1), white(r1, c1), white(r2, c3), white(r1, c3), white(r3, c3), white(r3, c1)]), Dict{Symbol,Any}())>, <PyCall.jlwrap PDDL.State(Set(Julog.Term[row(r1), column(c3), row(r3), row(r2), column(c2), column(c1)]), Set(Julog.Term[white(r2, c1), white(r1, c1), white(r1, c2), white(r3, c2), white(r2, c3), white(r1, c3), white(r3, c3), white(r3, c1), white(r2, c2)]), Dict{Symbol,Any}())>]
print(apl.get_actions_from_path(path))
[<PyCall.jlwrap flip_row(r1)>, <PyCall.jlwrap flip_row(r3)>, <PyCall.jlwrap flip_column(c2)>]
Contribute
Open an issue to state clearly the contribution you want to make. Upon aproval send in a PR with the Issue referenced. (Implement Issue #No / Fix Issue #No).
Maintainers
- Erwin Lejeune
- Sampreet Sarkar
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
jupyddl-0.2.4.tar.gz
(5.9 kB
view details)
Built Distribution
jupyddl-0.2.4-py3-none-any.whl
(12.3 kB
view details)
File details
Details for the file jupyddl-0.2.4.tar.gz
.
File metadata
- Download URL: jupyddl-0.2.4.tar.gz
- Upload date:
- Size: 5.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.23.0 setuptools/51.1.0 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.6.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e2421d705c4f062e23d7de93645570970ea5c9dee89d4fb869f0c0fbb9b626b8 |
|
MD5 | ff17c0acfbc96e79eeb411ae54d58e51 |
|
BLAKE2b-256 | f185006246e510cf1c9fb81e56b53d91a65f0199d4d3cc619617b92b0c91295d |
File details
Details for the file jupyddl-0.2.4-py3-none-any.whl
.
File metadata
- Download URL: jupyddl-0.2.4-py3-none-any.whl
- Upload date:
- Size: 12.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.23.0 setuptools/51.1.0 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.6.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8df57fae9494df8c43a49700533ea2b638636fcc3074a2f0246315e171bb580c |
|
MD5 | 7060e78106c45467ac98ed68ba940257 |
|
BLAKE2b-256 | 093e52a578c8e1a1a8deb059ab6101623d63388061cacbfdabb5af3469cb0ca9 |