CSC 384, Variable Elimination Example, Fall 2014
CSC 384, Variable Elimination Example, Fall 2014
Overview
The following is an example of a classical planning problem given a STRIPS representation.
Note in the following solution the precondition list contains only positive fluents. Some STRIPS formulations have
a separate positive and negative fluent precondition list. This solution avoids the need for a negated fluent precondition list.
Disjunctions are not allowed in any STRIPS list. If you need to have a disjunction in the preconditions, use multiple
actions. This is a weakness of the STRIPS forumlation.
Problem Description
Suppose we have a number of buckets and balls and we want to move the balls between the buckets using a robot
arm. Balls may be either in a given bucket or held by the robot arm. The robot arm may hold only one ball and
may only be at one bucket at a time. Formulate this as a STRIPS planning problem with the following actions:
Picking up a ball
Droping a ball
Moving the robot arm
With typing
We can repeat the same problem, assuming that predicates and actions are typed. This enables us to remove the
type checking fluents Ball and Bucket:
Fluents:
In(Ball X, Bucket Y): Is X ball X in bucket Y?
At(Bucket X): Is the robot arm at bucket X?
Holding(Ball X): Is the robot arm holding ball X?
Handfree(): Is the robot arm free to pick up a ball?
Operators:
Pickup(Ball X,Bucket Y): Pickup ball X from bucket Y
Preconditions: In(X,Y), At(Y), Handfree()
Add: Holding(X)
Delete: In(X,Y), Handfree()
Drop(Ball X,Bucket Y) : Drop ball X into bucket Y
Preconditions: Holding(X), At(Y)
Add: In(X,Y), Handfree()
Delete: Holding(X)
Move(Bucket X,Bucket Y): Move the robot arm from bucket X to bucket Y
Preconditions: At(X)
Add: At(Y)
Delete: At(X)