Vous êtes sur la page 1sur 18

Graphplan - Introduction

GraphPlan is an algorithm based on planning graph Planning graphs are also used as a source of heuristics (an estimate of how many steps it takes to reach the goal) Planning graph is an approximation of a complete tree of all possible actions and their results

Contd
Planning graph is organised into levels Level S0: initial state, consisting of nodes representing each fluent that holds in S0 Level A0: each ground action that might be applicable in S0 Then alternate Si and Ai Si contains fluents which could hold at time i, (may be both P and P); literals may show up too early but never too late Ai contains actions which could have their preconditions satisfied at i

Initial state: Have(Cake) Goal: Have(Cake) Eaten(Cake) Eat(Cake): Precond: Have(Cake) Effect: Have(Cake) Eaten(Cake) Bake(Cake): Precond: Have(Cake) Effect: Have(Cake)

Example

Example

Building a planning graphs


In addition to normal action, persistence action or no-op (no operation): one for each fluent, preserves the fluents truth. Mutex or mutual exclusion links depicted by red semicircles mean that actions cannot occur together Similarly there are mutex links between fluents. Build the graph until two consecutive levels are identical; then the graph levels off.

Example contd..

Mutex between actions


Mutex relation holds between two actions at the same level if any of the following three conditions holds: Inconsistent effects: one action negates an effect of another. For example, Eat(Cake) and persistence for Have(Cake) have inconsistent effects (Have(Cake) and Have(Cake))

Mutex between actions-contd


Interference: one of the effects of one action is the negation of a precondition of the other. For example Eat(Cake) interferes with the persistence of Have(Cake) by negating its precondition Competing needs: one of the preconditions of one action is mutually exclusive with a precondition of the other. For example, Eat(Cake) has precondition Have(Cake) and Bake(Cake) has precondition of Have(Cake).

Mutex between fluents


Mutex holds between fluents if: they are negations of each other, like Have(Cake) and Have(Cake) each possible pair of actions that could achieve the two literals is mutually exclusive, for example Have(Cake) and Eaten(Cake) in S1 can only be achieved by persistence for Have(Cake) and by Eat(Cake) respectively. (In S2 can use persistence for Eaten(Cake) and Bake(Cake) which are not mutex).

Planning graph example

Using planning graph for heuristic estimation


If some goal literal does not appear in the final level of the graph, the goal is not achievable The cost of achieving any goal literal can be estimated by counting the number of levels before it appears This heuristic never overestimates It underestimates because planning graph allows application of actions (including incompatible actions) in parallel

Using planning graph for heuristic estimation


Conjunctive goals: max level heuristic: max level for any goal conjunct (admissible but inaccurate) set level heuristic: which level they all occur on without mutex links (better, also admissible)

Graphplan-algorithm
GraphPlan repeatedly adds a level to a planning graph with Expand-Graph. Once all the goals show up as non-mutex in the graph, calls Extract-Solution on the graph to search for a plan. If that fails, extracts another level.

Graphplan-algorithm

function GraphPlan(problem) returns solution or failure graph Initial-Planning-Graph(problem) goals Conjuncts(problem.Goal) loop do if goals all non-mutex in last level of graph then do solution ExtractSolution(graph,goals,umLevels(graph) if solution = failure then return solution else if No-solution-possible(graph) then return failure graph Expand-Graph(graph,problem)

Extracting solution
Backward search problem: The initial state is the last level of the planning graph, Sn, along with the set of goals Available actions in Si: any set of conflict-free actions in Ai1 whose effects cover the goals in the state. Conflict-free means: no two actions are mutex and no two of their preconditions are mutex.

Contd..
The result of applying it is a subset of Si1 which has as its set of goals the preconditions of the selected set of actions. The goal is to reach a state at level S0 such that all the goals are satisfied. The cost of each action is 1.

Termination of GraphPlan
The graph will level off (assuming a finite set of literals and actions): Literals in planning graphs increase monotonically (because of persistence) Actions increase monotonically (because preconditions dont go away) Mutexes decrease monotonically (if two actions are mutex at level t, they were mutex at all previous levels)

Contd
When the graph levels off, if it is missing one of the goal conjuncts or two of the goals are mutex, solution is impossible and GraphPlan returns failure. If the graph levels off but Extract-Solution fails to find a solution, we may need to expand the graph finitely many times (but this will terminate - uses additional tricks).

Vous aimerez peut-être aussi