Generating states of Blocks World

John Slaney and Sylvie Thiébaux


  BW states online  


  Optimal BW plans  

 

Consider the familiar planning domain Blocks World (BW) with just two blocks, a and b. There are three possible states:

       a            b
       b            a          a      b
    --------     --------     ----------

    state #1     state #2      state #3
Any program which generates random BW states, say for purposes of experiments with planners, must be such as to give each of these three a probability of 1/3 of being generated. It is trivial to incorporate a random number generator into an algorithm for producing the states, but naive ways of doing this will give wrong probabilities. Typically, one of the three outcomes will have probability 1/2 and the other two 1/4, meaning that the distribution of states produced in that way will be skewed. Try it and see.

Blocks World is by far the most frequently used example in the planning literature. Despite the fact that much contemporary work in AI planning is moving away from such artificial examples, almost everyone who produces a formalism or a planner refers to the blocks at least for illustration. It is therefore worthwhile to provide a supply of randomly distributed Blocks World states.

The program BWSTATES does just that. It works by building the state progressively, paying due attention at each point to the probability that the next block should go on the table rather than on a tower.

BWSTATES is not intended as a solution to any deep mysteries. It is not itself a planner, not even an intelligent assistant, but simply a convenient tool serving a specific need of the AI planning community. It is mathematically rigorous, efficiently coded and very easy to use.

The program sources, with Makefile, README, online `man' page and documentation, are available by anonymous ftp.

You can get BW states online by pointing your browser at this form. There is no documentation with the online version, but it's pretty self-explanatory.


Automated Reasoning Group
Computer Sciences Laboratory
Research School of Information Sciences and Engineering
Australian National University