Next: Further Reading Up: Goal Stack Planning Previous: Goal Stack Planning

### Sussman Anomaly (1975)

Above method may fail to give a good solution. Consider:

Fig. 25 Sussman's Anomaly

The start state is given by:

ON(C, A) ONTABLE(A) ONTABLE(B) ARMEMPTY

The goal by:

ON(A,B) ON(B,C)

This immediately leads to two approaches as given below

1. ```    ON(A,B)

ON(B,C)

ON(A,B)   ON(B,C)

```
2. ```    ON(B,C)

ON(A,B)

ON(A,B)   ON(B,C)

```

Choosing path 1 and trying to get block A on block B leads to the goal stack:

```    ON(C,A)

CLEAR(C)

ARMEMPTY

ON(C,A)  CLEAR(C)  ARMEMPTY

UNSTACK(C,A)

ARMEMPTY

CLEAR(A)  ARMEMPTY

PICKUP(A)

CLEAR(B)  HOLDING(A)

STACK(A,B)

ON(B,C)

ON(A,B)   ON(B,C)

```

This achieves block A on block Bwhich was produced by putting block C on the table.

The sequence of operators is

1. UNSTACK(C,A)
2. PUTDOWN(C)
3. PICKUP(A)
4. STACK (A,B)

Working on the next goal of ON(B,C) requires block B to be cleared so that it can be stacked on block C. Unfortunately we need to unstack block A which we just did. Thus the list of operators becomes

1. UNSTACK(C,A)
2. PUTDOWN(C)
3. PICKUP(A)
4. STACK (A,B)
5. UNSTACK(A,B)
6. PUTDOWN(A)
7. PICKUP(B)
8. STACK (B,C)

To get to the state that block A is not on block B two extra operations are needed:

8
1. PICKUP(A)
2. STACK(A,B)

Analysing this sequence we observe that

• Steps 4 and 5 are opposites and therefore cancel each other out,
• Steps 3 and 6 are opposites and therefore cancel each other out as well.

So a more efficient scheme is:

1. UNSTACK(C,A)
2. PUTDOWN(C)
3. PICKUP(B)
4. STACK (B,C)
5. PICKUP(A)
6. STACK(A,B)

To produce in all such cases this efficient scheme where this interaction between the goals requires more sophisticated techniques which will be considered in the next lecture.

Next: Further Reading Up: Goal Stack Planning Previous: Goal Stack Planning

dave@cs.cf.ac.uk