Embeddable Graphplan Implementations

The goal of this project is to provide “embeddable” versions of Graphplan in various languages so that one can simply use the libraries and either programatically introduce planning problems to it, or create character streams to be parsed by the planning algorithms. I originally wrote this software to be embedded in the interpreters of agent programming languages.
Desirable features of each implementation include:
  • Textual input using a Prolog-like domain description language.
  • Easily understandable object model for programmatic input
  • Inclusion of all features of the original Graphplan implementation, including memoization and guaranteed termination.
  • Statistics gathering modules for comparison of runtimes with other algorithms/implementations

The current set of implementations includes:
  • C++ (Emplan): an STL-based implementation using a variation of Lex and Yacc for domain parsing. Operating systems that this implementation is known to compile and run include, Linux (CentOS), Mac OS X and Windows (MinGW). It was originally created to support an extended logic agent, but it can be used as a standalone command-line tool.
  • Java (JavaGP): an OS-independent implementation that uses JavaCC for domain parsing. This implementation was created for integration with Peleus, a planning-capable extension of the Jason AgentSpeak interpreter.

You can currently download the sources in Java and C++ (which differ somewhat as each language has its own quirks), as well as binaries for Windows and Mac OS. I encourage anyone with the time and disposition to refine these sources to send me a line and participate. At the moment I have some issues to address in the Java version.

It goes without saying that you are free to use this software for any purpose, but if you do use this software for any research or academic purpose, I would ask as a courtesy for you to cite my work that led to the implementation of these libraries.

If you use the C++ version of the planner, you can cite the following journal paper:

@ARTICLE{Meneguzzi2007:PlanningBDI,
author = {Felipe Meneguzzi and Avelino Francisco Zorzo and Michael da Costa
M\'{o}ra and Michael Luck},
title = {Incorporating Planning into {BDI} Agents},
journal = {Scalable Computing: Practice and Experience},
year = {2007},
volume = {8},
pages = {15--28}
}

Whereas if you use the Java library I would ask you to cite the following conference paper:

@INPROCEEDINGS{Meneguzzi2008:Leveraging,
author = {Felipe Meneguzzi and Michael Luck},
title = {Leveraging new plans in {AgentSpeak(PL)}},
booktitle = {Proceedings of the Sixth Workshop on Declarative Agent Languages},
year = {2008},
editor = {Matteo Baldoni and Tran Cao Son and M. Birna van Riemsdijk and Michael Winikoff},
pages = {63-78}
}