Planning Systems

Planning Systems: Classical Planners use the STRIPS (Stanford Research Institute Problem Solver) language to describe states and operators. It is an efficient way to represent planning algorithms.

Representation of States and Goals: States are represented by conjunctions of function-free ground literals, that is, predicates applied to constant symbols, possibly negated.

An example of an initial state is:

At(Home) /\ -Have(Milk) /\ -Have(Bananas) /\ -Have(Drill) /\ ...

A state description does not have to be complete. We just want to obtain a successful plan to a set of possible complete states. But if it does not mention a given positive literal, then the literal can be assumed to be false. Goals are a conjunction of literals. Therefore the goal is

At(Home) /\ Have(Milk) /\ Have(Bananas) /\ Have(Drill)

Goals can also contain variables. Being at a store that sells milk is equivalent to

At(x) /\ Sells(x,Milk)

We have to differentiate between a goal given to a planner which is producing a sequence of actions that makes the goal true if executed, and a query given to a theorem prover that produces true or false if there is truth in the sentences, given a knowledge base.

We also have to keep track of the changes rather than of the states themselves because most actions change only a small part of the state representation.

Representation of Actions
Strips operators consist of three components

  • action description: what an agent actually returns to the environment in order to do something.
  • precondition: conjunction of atoms (positive literals), that says what must be true before an operator can be applied.
  • effect of an operator: conjunction of literals (positive or negative) that describe how the situation changes when the operator is applied.

An example action of going from one place to another:

Op(ACTION:Go(there), PRECOND:At(here) /\ Path(here, there) EFFECT:At(there) /\ -At(here))

The following figure shows a diagram of the operator Go(there). The preconditions appear above the action, and the effects below.

Operator Schema: an operator with variables.

  • it is a family of actions, one for each of the different values of the variables.
  • every variable must have a value

Preconditions and Effects are restrictive. Operator o is applicable in a state s if every one of the preconditions in o are true in s. An example is if the initial situation includes the literals

At(Home, Path(Home, Supermarket)...

then the action Go(Supermarket) is applicable, and the resulting situation contains the literals

-At(Home),At(Supermarket), Path(Home, Supermarket)...

The result is all positive literals in Effect(o) hold, all literals in s hold and negative literals in Effect(o) are ignored. The set of operators for the “Box World” example problem is shown below:

Definitions of Descriptors:

  • ontable(x): block x is on top of the table
  • on(x,y): block x is on top of block y
  • clear(x): there is nothing on top of block x; therefore it can be picked up
  • handempty: you are not holding any block

Definitions of Operators:

  • Op{ACTION: pickup(x)
  • PRECOND: ontable(x), clear(x), handempty
  • EFFECT: holding(x), ~ontable(x), ~clear(x), ~handempty }
  • Op{ACTION: putdown(x)
  • PRECOND: holding(x)
  • EFFECT: ontable(x), clear(x), handempty, ~holding(x) }
  • Op{ACTION: stack(x,y)
  • PRECOND: holding(x), clear(y)
  • EFFECT: on(x,y), clear(x), handempty, ~holding(x), ~clear(y) }
  • Op{ACTION: unstack(x,y)
  • PRECOND: clear(x), on(x,y), handempty
  • EFFECT: holding(x), clear(y), ~clear(x), ~on(x,y), ~handempty ) }