Probabalistic Advanced Modeling and Execution Learning Architecture (PAMELA).
The goal of PAMELA is to design and implement a new probabilistic modeling language that extends the current state of the art process modeling languages, such as RMPL by adding first class probability variables. The compiler will not only compile the model into an automata representation such as a "Probabilistic Hierarchical Constraint Automata" (PHCA), but it will also synthesize a learning algorithm to bind the probabilistic variables using machine learning algorithms, appropriate for the program. This approach reduces the need for the programmer to be an expert in machine learning algorithms freeing the programmer to write models that employ probability values.
One of our initial focuses has been on developing language constructs to support Temporal Planning Network (TPN) for consumption by a suitable TPN execution engine.
The DOLL team (including Paul Robertson, Dan Cerys, Prakash Manghwani, and Tom Marble) presented the talk In situ model-based learning in PAMELA at Clojure Conj 2016. Check out the ClojureTV video and the slides.
See also our talk Model based programming in PAMELA from Clojure/west. Check out the ClojureTV video and the slides.
For more details visit the PAMELA project page.
Consider a simple mission to be performed by a quadcopter equipped with video cameras and some processing power. The quadcopter's mission is to monitor, process and upload images of the recently discovered white elephant in a land far far away. Reconnaissance drones have already sent the location of the elephant. The purpose of this mission is to collect photos of the elephant from high above the ground so as to not interfere with the natural habitat of the elephant.
Our quadcopter(QC) is an autonomous QC that can plan and adapt its own actions to ensure that mission is successful. For example, it could choose to the take images at full resolution or high resolution, perform image analysis at high speed or low speed to conserve power. In addition to video sensors, our QC is also equipped with two additional sensors for self defensive maneuvering actions from other wild birds who mistake QC for prey.
This mission is described in ./test/pamela/tpn-demo.pamela
Before using the pamela
command, be sure that you have run the pamela-setup
script (see below).
Create the Temporal Plan Network (TPN) plan from the Pamela file:
./bin/pamela -i test/pamela/tpn-demo.pamela -c main:tpn:elephant -o tpn-demo.tpn.json tpn
This network rendering was created with PLANVIZ as follows:
../planviz/bin/planviz -i tpn-demo.tpn.edn
- When you see
PLANVIZ server ready
, then open your browser to http://localhost:8080 - Click into the command box and type
/show tpn-demo.tpn
and press return. - When you see the TPN graph, type the command
/export
and you will be prompted to save tpn-demo.tpn.svg as a file (which you can view in your browser or any SVG capable tool).
The pamela-setup script is intended as an tool to help you get started quickly with the Pamela tools (including planviz).
This script will:
- Verify that java is installed
- Verify that git is installed
- Ensure that the
~/bin
directory exists (and create it if necessary) - Check that the
~/bin
is in thePATH
NOTE: the script will not attempt to change the initial setting of your PATH (this must be done manually if required). You can add the following to your.profile
or.bashrc
as appropriate:export PATH=$HOME/bin:$PATH
- Ensure that the
~/src/github/dollabs
directory exists (and create it if necessary) - Verify that boot is installed (and install it if necessary)
- Will install the DOLL labs repositories:
- webkeys (will install this pre-release library locally)
- webtasks (will install this pre-release library locally)
- plan-schema (will install this pre-release library locally)
- planviz (will build the PLANVIZ jar)
- pamela (will build the PAMELA jar)
- Will run the PAMELA Clojure tests and command line tests
curl -fsSLo pamela-setup https://raw.githubusercontent.com/dollabs/pamela/master/bin/pamela-setup && chmod +x pamela-setup && ./pamela-setup
Please see CONTRIBUTING for details on how to make a contribution.
PAMELA is currently under heavy development and has not yet been tagged with official "release". In this pre-release state the PAMELA API and functionality is subject to change.
Currently there is no mailing list setup for PAMELA (but will be at some point soon)!
Copyright © 2016 Dynamic Object Language Labs Inc.
Licensed under the Apache License 2.0 LICENSE
Please see ACKNOWLEDGEMENT