230 likes | 344 Vues
This text explores the concept of planning as a specific type of reasoning, particularly in robotics. It contrasts planning with search strategies using the example of taking a bath, highlighting actions, states, and the need for effective heuristics. The STRIPS (Stanford Research Institute Problem Solver) representation for planning systems is introduced, detailing states, goals, actions, preconditions, and effects. The text emphasizes backward chaining in planning and the integration of search methods to achieve a final goal effectively while managing constraints.
E N D
Planning • Planning is a special case of reasoning • We want to achieve some state of the world • Typical example is robotics Many thanks to Robin Burke, University of Chicago, for many of these ideas:http://people.cs.uchicago.edu/~burke/cs250/lectures/lecture1107.html
Example: Taking a Bath • Goal: Take A Bath • Initial State: • Final State:
Actions you take that affect state Examples: RemoveClothes PutOnClothes TurnOnWater TurnOffWater GetInTub GetOutOfTub Can use search to find the right combination of actions InsertPlug RemovePlug Scrub Lather PourShampoo PlayWithDuckie Operators
Problems with Search • Need a good heuristic – may not have one • No direct sense of which operators are relevant to the problem • Other constraints • Don’t want solutions where we take off clothes and put them on again several times • Search might find one • There is a directionality to what we want to do • Once the plug is in, we don't even want to consider removePlug • Blind search doesn't let us make these distinctions
How does planning improve on search? • Explicitly represent the goal and the way it is achieved using logic • Make "important" decisions first and fill in the details later • Take advantage of independence • Puzzles are puzzles because subgoals are interlocking (cannot do each tile of 8-puzzle separately) • The real world is more forgiving in many cases: taking off my clothes will not affect the state of the plug in the tub • Allows divide and conquer strategies
STRIPS Planning • STRIPS = STanford Research Institute Problem Solver • one of the first planning systems • one of the first formalisms • considerably extended now, but still in use • an entire subfield of planning is planning using the STRIPS representation • good place to start
STRIPS Representation • States: Conjunctions of predicates applied to constants • Goals: Conjunctions of predicates applied to constants or simple variables
STRIPS Representation • Actions: Get agent from one state to another • Action description: What to do, e.g. forward, vacuum, etc. • Precondition: what must be true to do action • PlugIn(Tub) would be a precondition for a Fill(Tub) action • Effect: what changes occur due to action • Full(Tub) would be effect of Fill(Tub)
Action Example • Precondition automatically refers to situation before, effects to situation after • Negation = retraction • Actions can have variables
Integrating Search • Still going to need to do some seaching • Could go forward from initial state • Progressive • High branching factor problem • Backward from goal • Regressive • Typically goals are conjunctive, works much like backward chaining
The STRIPS Planner • Start with a goal • TakingBath(Robot) • Need to know what conditions achieve this goal for backward chaining • Each conjunct is called a sub-goal • Need to achieve all subgoals • Want to know steps on how you got there
Algorithm • Start with goal • See if achieved already • If not, see if there’s some operator that can achieve it • Unclothed(x) • In KB, I have Clothed(Robot) • Unclothed(Robot) is achieved with the plan Undress(Robot) • If no such operator, try and decompose by backward chaining • If unable to do so, fail and backtrack
Full Example • Start with goal • Unclothed(Robot) & Full(Tub) & In(Robot,Tub) & Plugged(Tub) • Operator Undress(x): • Precond: Clothed(x) • Effect: Unclothed(x) & ~Clothed(x) • So plan is, for starters, • Undress(Robot) • Remaining goals: • Full(Tub) & In(Robot, Tub) & Plugged(Tub) • Next subgoal: Full(Tub)
Example continued • We have an operator Fill(x) • Precond: Plugged(x) • Effect: Full(x) & ~Empty(x) • So backward chain over precondition • Try operator Plug(x) • Precond: Unplugged(x) • Effect: Plugged(x) & ~Unplugged(x) • So add it to plan: • Undress(Robot), Plug(Tub)
Example continued • Now that precondition of Fill satisfied, add to plan • Plan: Undress(Robot), Plug(Tub), Fill(Tub) • Remaining goals: In(Robot,Tub) & Plugged(Tub) • Use operator GetIn(x,y) to get in tub • Plan: Undress(Robot), Plug(Tub), Fill(Tub), GetIn(Robot,Tub) • Remaining goals: Plugged(Tub) – it’s true
What’s the catch? • Test the solution at the end: You may clobber a condition along the way • E.g. You have to leave bathroom to fill tub (get dressed) • Done by keeping track of threats • Unclothed(Robot) is a precondition for final goal • Do not allow an operator which inserts Clothed(Robot) between Undress(Robot) and goal
Actual algorithm • Select subgoal state Sneed to resolve • Choose operator c to resolve it • Record link from previous state to final state