31.12.2013 Views

INTRODUCTION TO AI STRIPS PLANNING

AI&Games-Lecture2-part1.pdf

AI&Games-Lecture2-part1.pdf

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Stavros Vassos, University of Athens, Greece<br />

stavrosv@di.uoa.gr<br />

May 2012<br />

<strong>INTRODUCTION</strong> <strong>TO</strong> <strong>AI</strong><br />

<strong>STRIPS</strong> <strong>PLANNING</strong><br />

.. and Applications to Video-games!


Course overview<br />

2<br />

Lecture 1: Game-inspired competitions for <strong>AI</strong> research,<br />

<strong>AI</strong> decision making for non-player characters in games<br />

Lecture 2: <strong>STRIPS</strong> planning, state-space search<br />

Lecture 3: Planning Domain Definition Language (PDDL),<br />

using an award winning planner to solve Sokoban<br />

Lecture 4: Planning graphs, domain independent<br />

heuristics for <strong>STRIPS</strong> planning<br />

Lecture 5: Employing <strong>STRIPS</strong> planning in games:<br />

SimpleFPS, iThinkUnity3D, SmartWorkersRTS<br />

Lecture 6: Planning beyond <strong>STRIPS</strong>


Goal Oriented Action Planning (GOAP)<br />

3<br />

Video Games:<br />

Finite State Machines<br />

Decision Diagrams<br />

Behavior Trees<br />

Goal Oriented Action Planning<br />

Academic <strong>AI</strong> on agents:<br />

Knowledge representation, First-order logic,<br />

Classical planning, Planning with preferences, …<br />

Belief-Desire-Intention architecture, Agent-based<br />

programming, …<br />

Probabilistic reasoning, Bayesian networks,<br />

Utility theory, Markov Decision Processes, …


Goal Oriented Action Planning (GOAP)<br />

4<br />

Search for a plan that achieves the goal in the current<br />

state<br />

Move<br />

into room<br />

Move<br />

to door<br />

Preconditions: Door open<br />

Effects: In room<br />

Preconditions: -<br />

Effects: At door<br />

In room<br />

Unlock<br />

door<br />

Preconditions: Hold key<br />

Effects: Door open<br />

Kick<br />

door<br />

Preconditions: -<br />

Effects: Door open


Goal Oriented Action Planning (GOAP)<br />

5<br />

Search for a plan that achieves the goal in the current<br />

state<br />

There is a standard formalism for representing such<br />

problems in <strong>AI</strong> literature and a large body of work!<br />

Video-games: The best strategy is to use the existing<br />

formalism and take advantage of the work in the<br />

literature


Course overview<br />

6<br />

Lecture 1: Game-inspired competitions for <strong>AI</strong> research,<br />

<strong>AI</strong> decision making for non-player characters in games<br />

Lecture 2: <strong>STRIPS</strong> planning, state-space search<br />

Lecture 3: Planning Domain Definition Language (PDDL),<br />

using an award winning planner to solve Sokoban<br />

Lecture 4: Planning graphs, domain independent<br />

heuristics for <strong>STRIPS</strong> planning<br />

Lecture 5: Employing <strong>STRIPS</strong> planning in games:<br />

SimpleFPS, iThinkUnity3D, SmartWorkersRTS<br />

Lecture 6: Planning beyond <strong>STRIPS</strong>


<strong>STRIPS</strong> planning<br />

7<br />

Typical description of a planning problem:<br />

Initial state<br />

Goal<br />

Available actions<br />

Typical solution of a planning problem:<br />

A sequence of actions that when executed in the initial<br />

state results in a state that satisfies the goal condition.<br />

Planning: The automatic discovery of such solutions


What is a planning problem?<br />

8<br />

Let’s start with a simple example..


What is a planning problem?<br />

9<br />

Given:<br />

Initial state


What is a planning problem?<br />

10<br />

Given:<br />

Initial state<br />

Goal


What is a planning problem?<br />

11<br />

Given:<br />

Initial state<br />

Goal<br />

Available actions


What is a planning problem?<br />

12<br />

Given:<br />

Initial state<br />

Goal<br />

Available actions<br />

Find:<br />

A sequence of actions that achieves the goal<br />

E.g.: [Left, Down, Left, Up, …]


What is a planning problem?<br />

13<br />

Given:<br />

Initial state<br />

Goal<br />

Available actions<br />

Find:<br />

A sequence of actions that achieves the goal<br />

A method that is capable of finding a solution for every<br />

initial state and goal


What is a planning problem?<br />

14<br />

Given:<br />

Initial state<br />

Goal<br />

Available actions<br />

Find:<br />

A sequence of actions that achieves the goal<br />

A method that is capable of finding a solution for every<br />

application domain


Use of planning in real applications<br />

15<br />

Scheduling<br />

Hubble Space Telescope


Use of planning in real applications<br />

16<br />

KIVA Robots: robots make inventory isles move<br />

instead of workers<br />

youtube link


Use of planning in real applications<br />

17<br />

Autonomous agents with planning capabilities for<br />

specifying the behavior (Intelligent Agents/<br />

Cognitive Robots)<br />

UAV DARPA Grand/Urban Challenge, Honda<br />

ASIMO


<strong>STRIPS</strong> planning<br />

18<br />

Typical description of a planning problem:<br />

Initial state<br />

Goal<br />

Available actions


<strong>STRIPS</strong> planning<br />

19<br />

Blocks world domain<br />

Initial state: s 0<br />

Goal: g<br />

Α Β C<br />

s 0<br />

Α<br />

Β<br />

C<br />

g<br />

Available actions: moving a block<br />

• from the table to the top of another block<br />

• from the top of another block to the table<br />

• from the top of one block to the top of another block


<strong>STRIPS</strong> planning<br />

20<br />

Initial state<br />

Representation of the properties of the<br />

domain using first order logic literals<br />

Blocks world<br />

On(b,x):<br />

• block b is on top of x, where x is another<br />

block or the table<br />

Clear(x):<br />

• a block can be placed on top of x<br />

Α Β C<br />

On(Α,Table)<br />

On(Β,Table)<br />

On(C,Table)<br />

Clear(Α)<br />

Clear(Β)<br />

Clear(C)<br />

s 0


<strong>STRIPS</strong> planning<br />

21<br />

Initial state<br />

Representation of the properties of the<br />

domain using first order logic literals<br />

Ground and function-free<br />

Completely specified<br />

based on a closed-world assumption<br />

Α Β C<br />

On(Α,Table)<br />

On(Β,Table)<br />

On(C,Table)<br />

Clear(Α)<br />

Clear(Β)<br />

Clear(C)<br />

s 0


<strong>STRIPS</strong> planning<br />

22<br />

Initial state<br />

Closed-world<br />

assumption<br />

Any literal not<br />

mentioned in the<br />

description of the<br />

state are assumed<br />

to be false!<br />

On(Α,Α)<br />

On(Α,Β)<br />

On(Α,C)<br />

On(Β,Α)<br />

On(Β,Β)<br />

On(Β,C)<br />

On(C,Α)<br />

On(C,Β)<br />

On(C,C)<br />

On(Α,Α)<br />

On(Α,Β)<br />

On(Α,C)<br />

On(Table,Α)<br />

On(Table,Β)<br />

On(Table,C)<br />

On(Table,Table)<br />

Clear(Table)<br />

Α Β C<br />

On(Α,Table)<br />

On(Β,Table)<br />

On(C,Table)<br />

Clear(Α)<br />

Clear(Β)<br />

Clear(C)<br />

s 0


<strong>STRIPS</strong> planning<br />

23<br />

Goal<br />

Representation of the properties of the<br />

domain using first order logic literals<br />

Α<br />

Β<br />

C<br />

Ground and function-free<br />

Partially specified<br />

(no closed-world assumption)<br />

A state s satisfies goal g if it contains all<br />

literals in g (more literals may be in s)<br />

On(Α,Β)<br />

On(Β,C)<br />

g


<strong>STRIPS</strong> planning<br />

24<br />

<br />

The initial state and goal<br />

condition are described using<br />

first-order logic literals:<br />

Α Β C<br />

Α<br />

Β<br />

C<br />

ground<br />

function-free<br />

positive<br />

the list of literals typically<br />

forms a logical conjunction<br />

On(Α,Table)<br />

On(Β,Table)<br />

On(C,Table)<br />

Clear(Α)<br />

Clear(Β)<br />

Clear(C)<br />

On(Α,Β)<br />

On(Β,C)<br />

s 0<br />

g


<strong>STRIPS</strong> planning<br />

25<br />

Available actions<br />

Move:<br />

• from the table to the<br />

top of another block<br />

• from the top of<br />

another block to the<br />

table<br />

• from the top of one<br />

block to the top of<br />

another block<br />

Α Β C<br />

On(Α,Table)<br />

On(Β,Table)<br />

On(C,Table)<br />

Clear(Α)<br />

Clear(Β)<br />

Clear(C)<br />

s 0


<strong>STRIPS</strong> planning<br />

26<br />

Available actions<br />

Move:<br />

• from the table to the<br />

top of another block<br />

• from the top of<br />

another block to the<br />

table<br />

• from the top of one<br />

block to the top of<br />

another block<br />

Α Β C Α<br />

On(Α,Table)<br />

On(Β,Table)<br />

On(C,Table)<br />

Clear(Α)<br />

Clear(Β)<br />

Clear(C)<br />

Move(Β,Table,C)<br />

Β<br />

C<br />

???<br />

s 0 s 1


<strong>STRIPS</strong> planning<br />

27<br />

Available actions<br />

Preconditions: literals<br />

denoting what needs to<br />

be in the state for the<br />

action to be applicable<br />

Effects: literals denoting<br />

how the state is<br />

transformed when the<br />

action is applied.<br />

Α Β C Α<br />

On(Α,Table)<br />

On(Β,Table)<br />

On(C,Table)<br />

Clear(Α)<br />

Clear(Β)<br />

Clear(C)<br />

Move(Β,Table,C)<br />

s 0 s 1<br />

Β<br />

C<br />

???


<strong>STRIPS</strong> planning<br />

28<br />

Available actions<br />

Β<br />

Preconditions:<br />

• On(b,x)<br />

• Clear(b)<br />

• Clear(y)<br />

Effects:<br />

• On(b,y)<br />

• Clear(x)<br />

• On(b,x)<br />

• Clear(y)<br />

Α Β C Α<br />

On(Α,Table)<br />

On(Β,Table)<br />

On(C,Table)<br />

Clear(Α)<br />

Clear(Β)<br />

Clear(C)<br />

Move(Β,Table,C)<br />

s 0 s 1<br />

C<br />

???


<strong>STRIPS</strong> planning<br />

29<br />

Available actions<br />

Β<br />

Preconditions:<br />

• On(Β,Table)<br />

• Clear(Β)<br />

• Clear(C)<br />

Effects:<br />

• On(Β,C)<br />

• Clear(Table)<br />

• On(Β,Table)<br />

• Clear(C)<br />

Α Β C Α<br />

On(Α,Table)<br />

On(Β,Table)<br />

On(C,Table)<br />

Clear(Α)<br />

Clear(Β)<br />

Clear(C)<br />

Move(Β,Table,C)<br />

s 0 s 1<br />

C<br />

???


<strong>STRIPS</strong> planning<br />

30<br />

Available actions<br />

Β<br />

Preconditions:<br />

• On(Β,Table)<br />

• Clear(Β)<br />

• Clear(C)<br />

Effects:<br />

• On(Β,C)<br />

• Clear(Table)<br />

• On(Β,Table)<br />

• Clear(C)<br />

Α Β C Α<br />

On(Α,Table)<br />

On(Β,Table)<br />

On(C,Table)<br />

Clear(Α)<br />

Clear(Β)<br />

Clear(C)<br />

Move(Β,Table,C)<br />

C<br />

On(Α,Table)<br />

On(Β,C)<br />

On(C,Table)<br />

Clear(Α)<br />

Clear(Β)<br />

Clear(Table)<br />

s 0 s 1


<strong>STRIPS</strong> planning<br />

31<br />

Available actions<br />

Preconditions:<br />

• On(b,x)<br />

• Clear(b)<br />

• Clear(y)<br />

Effects:<br />

• On(b,y)<br />

• Clear(x)<br />

• On(b,x)<br />

• Clear(y)<br />

Α<br />

Β<br />

C<br />

On(Α,Table)<br />

On(Β,C)<br />

On(C,Table)<br />

Clear(Α)<br />

Clear(Β)<br />

Clear(Table)<br />

Move(C,Table,Α)<br />

???<br />

???<br />

s 1 s 2


<strong>STRIPS</strong> planning<br />

32<br />

Available actions<br />

Preconditions:<br />

• On(C,Table)<br />

• Clear(C)<br />

• Clear(Α)<br />

Effects:<br />

• On(C,Α)<br />

• Clear(Table)<br />

• On(C,Table)<br />

• Clear(Α)<br />

Α<br />

Β<br />

C<br />

On(Α,Table)<br />

On(Β,C)<br />

On(C,Table)<br />

Clear(Α)<br />

Clear(Β)<br />

Clear(Table)<br />

Move(C,Table,Α)<br />

???<br />

???<br />

s 1 s 2


<strong>STRIPS</strong> planning<br />

33<br />

Available actions<br />

Α<br />

Β<br />

Β<br />

Preconditions:<br />

• On(Α,Table)<br />

• Clear(Α)<br />

• Clear(Β)<br />

Effects:<br />

• On(Α,Β)<br />

• Clear(Table)<br />

• On(Α,Table)<br />

• Clear(Β)<br />

Α<br />

C<br />

On(Α,Table)<br />

On(Β,C)<br />

On(C,Table)<br />

Clear(Α)<br />

Clear(Β)<br />

Clear(Table)<br />

Move(Α,Table,Β)<br />

C<br />

???<br />

s 1 s 2


<strong>STRIPS</strong> planning<br />

34<br />

Available actions<br />

Α<br />

Β<br />

Β<br />

Preconditions:<br />

• On(Α,Table)<br />

• Clear(Α)<br />

• Clear(Β)<br />

Effects:<br />

• On(Α,Β)<br />

• Clear(Table)<br />

• On(Α,Table)<br />

• Clear(Β)<br />

Α<br />

C<br />

On(Α,Table)<br />

On(Β,C)<br />

On(C,Table)<br />

Clear(Α)<br />

Clear(Β)<br />

Clear(Table)<br />

Move(Α,Table,Β)<br />

C<br />

On(Α,Β)<br />

On(Β,C)<br />

On(C,Table)<br />

Clear(Α)<br />

Clear(Table)<br />

s 1 s 2


<strong>STRIPS</strong> planning<br />

35<br />

Α Β C Α<br />

Β<br />

C<br />

Α<br />

Β<br />

C<br />

On(Α,Table)<br />

On(Β,Table)<br />

On(C,Table)<br />

Clear(Α)<br />

Clear(Β)<br />

Clear(C)<br />

On(Α,Table)<br />

On(Β,C)<br />

On(C,Table)<br />

Clear(Α)<br />

Clear(Β)<br />

Clear(Table)<br />

On(Α,Β)<br />

On(Β,C)<br />

On(C,Table)<br />

Clear(Α)<br />

Clear(Table)<br />

s 0<br />

Move(Β,Table,C)<br />

s 1<br />

Move(Α,Table,Β)<br />

s 2


<strong>STRIPS</strong> planning<br />

36<br />

Α<br />

Α<br />

Β<br />

Β<br />

Β<br />

Α Β C Α<br />

C<br />

C<br />

C<br />

On(Α,Table)<br />

On(Β,Table)<br />

On(C,Table)<br />

Clear(Α)<br />

Clear(Β)<br />

Clear(C)<br />

On(Α,Table)<br />

On(Β,C)<br />

On(C,Table)<br />

Clear(Α)<br />

Clear(Β)<br />

Clear(Table)<br />

On(Α,Β)<br />

On(Β,C)<br />

On(C,Table)<br />

Clear(Α)<br />

Clear(Table)<br />

On(Α,Β)<br />

On(Β,C)<br />

Move(Β,Table,C)<br />

Move(Α,Table,Β)<br />

s 0 s 1 s 2<br />

g


<strong>STRIPS</strong> planning<br />

37<br />

Is our <strong>STRIPS</strong> representation of the<br />

blocks world correct?<br />

Consider moving back blocks A<br />

and B back to the table<br />

Α<br />

Β<br />

C<br />

On(Α,Β)<br />

On(Β,C)<br />

On(C,Table)<br />

Clear(Α)<br />

Clear(Table)


<strong>STRIPS</strong> planning<br />

38<br />

Α<br />

Β<br />

Β<br />

C<br />

Α<br />

C<br />

Α Β C<br />

On(Α,Β)<br />

On(Β,C)<br />

On(C,Table)<br />

Clear(Α)<br />

Clear(Table)<br />

On(Α,Table)<br />

On(Β,C)<br />

On(C,Table)<br />

Clear(Α)<br />

Clear(Β)<br />

???<br />

Move(A,B,Table)<br />

Move(B,C,Table)<br />

s 2 s 3 s 4


<strong>STRIPS</strong> planning<br />

39<br />

Is our <strong>STRIPS</strong> representation of the<br />

blocks world correct?<br />

Consider moving back blocks A<br />

and B back to the table<br />

Clear(Table) needs to be treated<br />

differently<br />

Move(b,x,y)<br />

MoveToTable(b,x)<br />

Α<br />

Β<br />

C<br />

On(Α,Β)<br />

On(Β,C)<br />

On(C,Table)<br />

Clear(Α)<br />

Clear(Table)


<strong>STRIPS</strong> planning<br />

40<br />

Init( On(Α,Table) On(Β,Table) On(C,Table)<br />

Clear(Α) Clear(Β) Clear(C) )<br />

Goal( On(Α,Β) On(Β,C) )<br />

Action( Move(b,x,y),<br />

PRECONDITIONS: On(b,x) Clear(b) Clear(y)<br />

EFFECTS: On(b,y) Clear(x) On(b,x)<br />

Clear(y) )<br />

Action( MoveToTable(b,x),<br />

PRECONDITIONS: On(b,x) Clear(b)<br />

EFFECTS: On(b,Table) Clear(x) On(b,x) )


<strong>STRIPS</strong> planning<br />

41<br />

Init( On(Α,Table) On(Β,Table) On(C,Table)<br />

! Variables that appear in preconditions and effects<br />

Clear(Α) Clear(Β) Clear(C) )<br />

need to be parameters of the action schema<br />

Goal( On(Α,Β) On(Β,C) )<br />

Action( Move(b,x,y),<br />

PRECONDITIONS: On(b,x) Clear(b) Clear(y)<br />

EFFECTS: On(b,y) Clear(x) On(b,x)<br />

Clear(y) )<br />

Action( MoveToTable(b,x),<br />

PRECONDITIONS: On(b,x) Clear(b)<br />

EFFECTS: On(b,Table) Clear(x) On(b,x) )


<strong>STRIPS</strong> planning<br />

42<br />

Init( On(Α,Table) On(Β,Table) On(C,Table)<br />

! Variables that appear in preconditions and effects<br />

Clear(Α) Clear(Β) Clear(C) )<br />

need to be parameters of the action schema<br />

Goal( On(Α,Β) On(Β,C) )<br />

Action( Move(b,x,y),<br />

PRECONDITIONS: On(b,x) Clear(b) Clear(y)<br />

EFFECTS: On(b,y) Clear(x) On(b,x)<br />

Clear(y) )<br />

Action( MoveToTable(b,x),<br />

PRECONDITIONS: On(b,x) Clear(b)<br />

EFFECTS: On(b,Table) Clear(x) On(b,x) )


<strong>STRIPS</strong> planning<br />

43<br />

Init( On(Α,Table) On(Β,Table) On(C,Table)<br />

! Variables that appear in preconditions and effects<br />

Clear(Α) Clear(Β) Clear(C) )<br />

need to be parameters of the action schema<br />

Goal( On(Α,Β) On(Β,C) )<br />

Action( Move(b,x,y),<br />

PRECONDITIONS: On(b,x) Clear(b) Clear(y)<br />

EFFECTS: On(b,y) Clear(x) On(b,x)<br />

Clear(y) )<br />

Action( MoveToTable(b,x),<br />

PRECONDITIONS: On(b,x) Clear(b)<br />

EFFECTS: On(b,Table) Clear(x) On(b,x) )


<strong>STRIPS</strong> planning<br />

44<br />

Init( On(Α,Table) On(Β,Table) On(C,Table)<br />

Clear(Α) Clear(Β) Clear(C) )<br />

Goal( On(Α,Β) On(Β,C) )<br />

Action( Move(b,x,y),<br />

PRECONDITIONS: On(b,x) Clear(b) Clear(y)<br />

EFFECTS: On(b,y) Clear(x) On(b,x)<br />

Clear(y) )<br />

Action( MoveToTable(b,x),<br />

PRECONDITIONS: On(b,x) Clear(b)<br />

EFFECTS: On(b,Table) Clear(x) On(b,x) )<br />

! Simplified <strong>STRIPS</strong> version of Figure 11.4 in <strong>AI</strong>MA 2 nd Ed.


<strong>STRIPS</strong> planning<br />

45<br />

Gripper domain<br />

Init( On-Table(Α) On-Table(Β) On-table(C)<br />

Clear(Α) Clear(Β) Clear(C) Grip-Empty )<br />

Goal( On(Α,Β) On(Β,C) )<br />

Action( Pick-up(x), … )<br />

Action( Put-down(x), … )<br />

Action( Stack(top,below), … )<br />

Action( Unstack(top,below), … )


<strong>STRIPS</strong> planning<br />

46<br />

Reasoning about action and change<br />

Since 1971 that <strong>STRIPS</strong> planning was proposed by R. E.<br />

Fikes and N. J. Nilsson, more expressive planning<br />

formalisms have been developed based on <strong>STRIPS</strong>!<br />

ADL allows open worlds, conditional effects, quantifiers<br />

[Pednault 1988]<br />

Situation calculus [McCarthy, Hayes 1969] [Reiter 2001]<br />

is based on first-order logic allowing rich<br />

representations<br />

Action languages A, Fluent calculus, Event calculus, …


Bibliography<br />

47<br />

Material<br />

• Artificial Intelligence: A Modern Approach 2nd Ed. Stuart Russell, Peter<br />

Norvig. Prentice Hall, 2003 Section 11.1<br />

References<br />

• <strong>STRIPS</strong>: A new approach to the application of theorem proving to<br />

problem solving. Richard E. Fikes, Nils J. Nilsson. Artificial Intelligence,<br />

Vol. 2, No. 3-4, 1971.<br />

• Synthesizing plans that contain actions with context-dependent effects.<br />

E. P. D. Pednault. Computational Intelligence, Vol. 4, No. 3. 1988.<br />

• Some Philosophical Problems from the Standpoint of Artificial<br />

Intelligence. John McCarthy, Patrick J. Hayes. Machine Intelligence, Vol.<br />

4, 1969.<br />

• Knowledge in Action: Logical Foundations for Specifying and<br />

Implementing Dynamical Systems. Raymond Reiter. MIT Press, 2001.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!