Welcome to LAPKT!

From Lightweight Automated Planning Toolkit (LAPKT)
Revision as of 00:07, 25 September 2014 by Nirlipo (Talk | contribs)

Jump to: navigation, search

What is LAPKT?

LAPKT stands for the Lightweight Automated Planning ToolKiT. It aims to make your life easier if your purpose is to create, use or extend basic to advanced Automated Planners. It's an open-source Toolkit written in C++ and Python with simple interfaces that give you complete flexibility by decoupling parsers from problem representations and algorithms. It has been succesfully used in embedded systems, webservices, and contains some of the high-performance planners from the last International Planning Competition 2014.


LAPKT separates search engines from the data structures used to represent planning tasks. This second component receives the name of ‘interface’ since it is indeed the interface that provides the search model to be solved.

At the moment of writing this, the following interfaces are offered:

  • ‘agnostic’: this interface does not depend on a particular planning language, so it is easy to wrap PDDL parsers, separating parsing representation of planning tasks from a representation optimized for off-line planning. This interface should also make easy to integrate STRIPS planners into applications by suitably defining planning tasks programatically.
  • ‘ff’: this interface wraps FF parsing components to obtain ‘agnostic’ looking tasks.

Future interfaces planned are:

  • ‘hsps’: this interface wraps Patrik Haslum’s HSP codebase, which supports parsing of PDDL 3.0 features.
  • ‘SAS+’: this interface is meant to support SAS representations natively. Since there is no SAS-based planning language, this will probably be useful to integrate planners into applications that are able to define SAS planning tasks programatically.

Search engine components are meant to be modular, allowing users of LAPKT to assemble and combine features of different search engines to come up with customized search strategies, within reason and without sacrificing (much) efficiency. In order to do so, LAPKT makes heavy use of C++ templates and the Static Strategy design pattern. At the time of writing this, the modularity and decoupling of components isn’t as high as I would like, there’s still a lot of work to do :)

LAPKT is bound to change rapidly and dramatically over the next months, so please keep this in mind when using this library.

Contact & Contributing

Anybody can contribute to LAPKT by submitting code or patches to admin@lapkt.org or through the github repository

  • Forum / public mailing list: LAPKT Google Group (intended for users and non-core developers)
  • internal mailing list: LAPKT-dev Google Group (intended for internal discussions between the core developers)
  • general questions: Miquel Ramirez and Nir Lipovetzky <admin@lapkt.org>