Hide menu

Running LAMA

Questions, Problems and Bugs

If you have problems with any of the planners, please ask your lab assistant. Through the WWW links provided you can find out more about the planning systems, but please, do not contact their authors!

Known Problems

LAMA, like many planners, requires all the arguments to an operator to be different, i.e. an action such as (move A B A) is considered impossible regardless of the domain definition. This can cause a problem in some domains.

LAMA does not handle planning with durations.

How LAMA Works

LAMA consists of three separate programs:

  1. the translator (written in Python),
  2. the knowledge compilation module (written in C++), and
  3. the search engine (also written in C++).
To solve a planning problem, the three programs are called in sequence; they communicate via text files. The translator transforms the planner input from PDDL into a multi-valued state representation. At this stage a grounding algorithm is used for instantiating operators and axioms these are then fed to invariant synthesis algorithm which determines groups of mutually exclusive facts. These groups are used for determining the order between landmarks. Landmarks are variable assignments that must occur at some point in every solution plan. The knowledge compilation module builds a number of data structures which will be used in the landmark generation and search. It also constructs successor generators that can be used to efficiently determine which actions are applicable in a given state. Also axiom evaluators for efficiently evaluating values of derived state variables are built here.

The search engine uses multi-heuristics to speed up the search process. It makes use of the FF heuristic and also of landmarks. The landmark heuristic measures the distance to a goal by the number of landmarks that still need to be achieved.

Input

LAMA accepts PDDL input, including some parts of ADL: quantified and conditional effects, quantified preconditions and goals and :typing, but not type hierarchies.

Running LAMA

LAMA is started with the command

/courses/TDDC17/bin/downward/src/lama <domain file> <problem file>

Note that after LAMA finds a solution, it keeps searching for a better one. It only stops after having completely exhausted the search space.


Page responsible: Fredrik Heintz
Last updated: 2019-09-24