Planning in the blocks world

This is a standard AI problem.  Several blocks are placed on a table in stacks - each block is located either on the table or on another block, no block is placed on two other blocks or on a block and the table in the same time, no two blocks are placed directly on the same block . These blocks need to be rearranged to a given goal configuration. This goal configuration satisfies the same constraints as the initial one. A legal move consists of picking the top block from some stack and placing it on top of another stack or on the table.

NOTES:

  1. The initial configuration must be completely specified. The goal configuration may possibly be given only a partial specification.
  2. Two versions of the problem are of interest depending on whether concurrent actions are allowed.


INPUT:

  1. An initial configuration. Blocks are represented as integers 0, 1, 2, ... . The configuration is given in terms of ground atoms of the form "on0(a,b)". The meaning of atom "on0(a,b)" is: at time 0 block a is directly on top of block b).
  2. A goal configuration (possibly an incomplete description). The configuration is given in terms of a list of ground atoms of the form "onF(a,b)". The meaning of atom "onF(a,b)" is: the goal is to have a directly on top of block b.


OUTPUT: A set of actions that transform initial configuration into the  goal configuration.

DATA SETS:

  1. dl.c     15 blocks 1, 2, ..., 15 (derived from a  data set posted at SATLIB)
  2. dl.d     17 blocks 1, 2, ..., 17 (derived from a  data set posted at SATLIB)