Goal Stack Planning
• Goal Stack Planning follows a top-down
approach to problem-solving.
• It starts with a high-level goal and
recursively breaks it down into sub-goals
until the sub-goals can be directly
achieved through a sequence of actions.
• The main idea is to find a plan to
achieve the initial goal by reducing it to
simpler sub-goals and, eventually, to a
sequence of executable actions.
Cont…
• Goal Stack Planning is one of the earliest
methods in artificial intelligence in which
we work backwards from the goal
state to the initial state.
• We start at the goal state and we try
fulfilling the preconditions required to
achieve the initial state.
• These preconditions in turn have their
own set of preconditions, which are
required to be satisfied first. We keep
solving these “goals” and “sub-goals”
until we finally arrive at the Initial State.
• We make use of a stack to hold
these goals that need to be fulfilled
as well the actions that we need to
perform for the same.
Cont…
• Apart from the “Initial State” and the
“Goal State”, we maintain a “World
State” configuration as well.
• Goal Stack uses this world state to
work its way from Goal State to Initial
State. World State on the other hand
starts off as the Initial State and ends
up being transformed into the Goal
state.
What is Blocks World Problem?
• This is how the problem goes — There is
a table on which some blocks are placed.
• Some blocks may or may not be stacked
on other blocks. We have a robot arm to
pick up or put down the blocks.
• The robot arm can move only one block
at a time, and no other block should be
stacked on top of the block which is to be
moved by the robot arm.
Representing the configurations as a list of “predicates”
• Predicates can be thought of as a
statement which helps us convey the
information about a configuration in Blocks
World.
• Given below are the list of predicates as
well as their intended meaning
[Link](A,B) : Block A is on B
[Link](A) : A is on table
[Link](A) : Nothing is on top of A
[Link](A) : Arm is holding A.
[Link] : Arm is holding nothing
Example
• Initial State — ON(B,A) ∧ ONTABLE(A) ∧ ONTABLE(C) ∧
ONTABLE(D) ∧ CLEAR(B) ∧ CLEAR(C) ∧ CLEAR(D) ∧
ARMEMPTY
• Goal State — ON(C,A) ∧ ON(B,D) ∧ ONTABLE(A) ∧ ONTABLE(D) ∧
CLEAR(B) ∧ CLEAR(C) ∧ ARMEMPTY
“Operations” performed by the robot arm
The Robot Arm can perform 4
operations:
[Link](X,Y) : Stacking Block X on
Block Y
[Link](X,Y) : Picking up Block X
which is on top of Block Y
[Link](X) : Picking up Block X which
is on top of the table
[Link](X) : Put Block X on the
table
• All the four operations have certain
preconditions which need to be
satisfied to perform the same. These
preconditions are represented in the
Cont…
• The Precondition, Add and Delete List for each operation is
rather intuitive and have been listed below.