ix.test
Class BlockStacker

java.lang.Object
  extended by ix.test.BlockStacker
Direct Known Subclasses:
HtnBlockStacker, PrecondBlockStacker

public abstract class BlockStacker
extends java.lang.Object

A useful base class for classes that run block-stacking planning problems.

It contains methods for processing problem descriptions in a compact form:

A tower is a sequence of letters, each representing a block, listed from highest block to lowest. For example, "abc" is a tower with A on top of B on top of C, with C on the table.

A block-stacking problem is specified as initial-final where initial and final are comma-separated lists of towers. For example, "ca,b-abc" for the Sussman anomaly.


Field Summary
protected  Domain baseDomain
           
protected  java.util.List<java.util.List<Symbol>> finalTowers
           
protected  java.util.List<java.util.List<Symbol>> initialTowers
           
protected  java.lang.String problem
           
protected static Symbol S_ACHIEVE
           
protected static Symbol S_BLOCK
           
protected static Symbol S_CLEARTOP
           
protected static Symbol S_FALSE
           
protected static Symbol S_ON
           
protected static Symbol S_TABLE
           
protected static Symbol S_TRUE
           
protected  Slip slip
           
 
Constructor Summary
BlockStacker(java.lang.String problem)
           
 
Method Summary
(package private)  java.util.Set allBlocks(java.util.List towerLists)
           
(package private)  java.util.Set<Symbol> blockSet(java.util.List<java.util.List<Symbol>> towers)
           
(package private)  void checkPattern(java.util.Map state, LList pattern, Symbol expectedValue, java.util.List incorrectPatterns)
           
 void checkPlan()
           
(package private)  void checkSameBlocks(java.util.List<java.util.List<Symbol>> towers1, java.util.List<java.util.List<Symbol>> towers2)
           
 void checkTowerState(java.util.Map state, java.util.List towers)
           
 java.util.List failedGoalPatterns(java.util.Map state)
           
 void findPlan()
           
protected abstract  java.lang.String getDefaultBaseDomainName()
           
 java.util.List<java.util.List<Symbol>> getFinalTowers()
           
 java.util.List<java.util.List<Symbol>> getInitialTowers()
           
 Plan getPlan()
           
protected abstract  Refinement goalStateRefinement(java.util.List finalTowers)
           
 java.util.List incorrectTowerPatterns(java.util.Map state, java.util.List towers)
           
 Plan initialPlan()
           
 Plan initialPlan(java.util.List initialTowers, java.util.List finalTowers)
           
protected  Refinement initialStateRefinement(java.util.List initialTowers)
           
 void parseTowers(java.lang.String problem)
           
(package private)  LList pattern(java.lang.String pat)
           
 Domain problemDomain()
           
 Domain problemDomain(java.util.List initialTowers, java.util.List finalTowers)
           
(package private)  Refinement problemTaskRefinement()
           
 void replan()
           
 void setBaseDomain(Domain dom)
           
protected  void setupForPlanning()
           
(package private)  java.util.List<Symbol> towerBlocks(java.lang.String towerDescription)
          Returns a list of symbols representing the blocks in a tower.
(package private)  java.util.List towerPatterns(java.util.List tower)
           
(package private)  java.util.List<java.util.List<Symbol>> towers(java.lang.String towerDescriptions)
          Returns a list of lists, one list per tower.
(package private)  Constraint worldEffect(LList pattern)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

slip

protected Slip slip

initialTowers

protected java.util.List<java.util.List<Symbol>> initialTowers

finalTowers

protected java.util.List<java.util.List<Symbol>> finalTowers

problem

protected java.lang.String problem

baseDomain

protected Domain baseDomain

S_ACHIEVE

protected static final Symbol S_ACHIEVE

S_ON

protected static final Symbol S_ON

S_BLOCK

protected static final Symbol S_BLOCK

S_CLEARTOP

protected static final Symbol S_CLEARTOP

S_TABLE

protected static final Symbol S_TABLE

S_TRUE

protected static final Symbol S_TRUE

S_FALSE

protected static final Symbol S_FALSE
Constructor Detail

BlockStacker

public BlockStacker(java.lang.String problem)
Method Detail

getInitialTowers

public java.util.List<java.util.List<Symbol>> getInitialTowers()

getFinalTowers

public java.util.List<java.util.List<Symbol>> getFinalTowers()

setBaseDomain

public void setBaseDomain(Domain dom)

getDefaultBaseDomainName

protected abstract java.lang.String getDefaultBaseDomainName()

findPlan

public void findPlan()

replan

public void replan()

getPlan

public Plan getPlan()

setupForPlanning

protected void setupForPlanning()

checkPlan

public void checkPlan()

parseTowers

public void parseTowers(java.lang.String problem)

towers

java.util.List<java.util.List<Symbol>> towers(java.lang.String towerDescriptions)
Returns a list of lists, one list per tower.


towerBlocks

java.util.List<Symbol> towerBlocks(java.lang.String towerDescription)
Returns a list of symbols representing the blocks in a tower.


checkSameBlocks

void checkSameBlocks(java.util.List<java.util.List<Symbol>> towers1,
                     java.util.List<java.util.List<Symbol>> towers2)

blockSet

java.util.Set<Symbol> blockSet(java.util.List<java.util.List<Symbol>> towers)

initialPlan

public Plan initialPlan()

initialPlan

public Plan initialPlan(java.util.List initialTowers,
                        java.util.List finalTowers)

problemDomain

public Domain problemDomain()

problemDomain

public Domain problemDomain(java.util.List initialTowers,
                            java.util.List finalTowers)

problemTaskRefinement

Refinement problemTaskRefinement()

initialStateRefinement

protected Refinement initialStateRefinement(java.util.List initialTowers)

goalStateRefinement

protected abstract Refinement goalStateRefinement(java.util.List finalTowers)

pattern

LList pattern(java.lang.String pat)

allBlocks

java.util.Set allBlocks(java.util.List towerLists)

worldEffect

Constraint worldEffect(LList pattern)

towerPatterns

java.util.List towerPatterns(java.util.List tower)

checkTowerState

public void checkTowerState(java.util.Map state,
                            java.util.List towers)

failedGoalPatterns

public java.util.List failedGoalPatterns(java.util.Map state)

incorrectTowerPatterns

public java.util.List incorrectTowerPatterns(java.util.Map state,
                                             java.util.List towers)

checkPattern

void checkPattern(java.util.Map state,
                  LList pattern,
                  Symbol expectedValue,
                  java.util.List incorrectPatterns)