IFT615 – Intelligence artificielle Planification temporelle Éric Beaudry http://planiart.usherbrooke.ca/~eric/ Étudiant au doctorat en informatique Laboratoire Planiart
Sujets Planification temporelle Planification avec actions simultanées
Planification classique Chaque action a une durée implicite (unitaire). Un plan est une séquence d’actions. Recherche A*. «Planification heuristique» = planification basée sur une recherche avec une heuristique indépendante du domaine.
Plans séquentiels Mission Plan Déplacer(p1,p2) Déplacer(p1,p2) Pos=p1 Déplacer(p1,p2) Déplacer(p1,p2) Mission Livrer message m1 de p3 à p5 État initial Position = p1 … Déplacer(p1,p2) Pos=p7 Pos=p2 Pos=p3 Prendre(m1,p3) … … Pos=p3 Déplacer(p3,p5) p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 Pos=p5 Plan SeDéplacer(p1, p3) PrendreMsg(m1, p3) SeDéplacer(p3, p5) Livrer(m1, p5) Livrer(m1,p5) Pos=p5
Planification de missions pour robots sur MARS Image Source : http://marsrovers.jpl.nasa.gov/gallery/artwork/hires/rover3.jpg Exemple d’une application nécessitant des actions temporelles (concurrente) Planification de missions pour robots sur MARS
Transport Problem Initial State Goal State r1 r2 r3 r4 r1 r2 r3 r4 r5 robot robot
Classical Planning (A*) Goto(r5,r1) Goto(r5,r2) … Take(…) … … … … Goto(…) … … …
Modification pour planification temporelle Préconditions Conditions at start at end over all L’état a un temps. Les actions une une durée.
Classical Planning Temporal Planning : add current-time to states … Goto(r5, r1) … Goto(r1, r5) Temporal Planning : add current-time to states Goto(r5, r1) Goto(r1, r5) Time=0 Time=60 Time=120
Planification temporelle par recherche à chainage avant Augmentation de l’espace d’états Chaque état contient une file d’événements (agenda) qui mémorise les effets futurs («delayed effects»). Un état : Estampille temporelle Contenu de l’état (faits) Une file d’événements futurs
Concurrent Mars Rover Problem Goto(a, b) InitializeSensor() AcquireData(p) at begin: robotat(a) over all: link(a, b) atbegin: not initialized() over all: at(p) initialized() Conditions Conditions Conditions at begin: not at(a) at end: at(b) at end: initialized() at end: not initialized() hasdata(p) Effets Effets Effets
Exemple de problème Initial State Goal State r1 r2 r3 r4 r1 r2 r3 r4 robot Camera (Sensor) is not initialized. Picture r2 . robot has
Action Concurrency Planning Time=0 Time=0 InitCamera() Position=undefined Position=undefined Goto(r5,r2) 90: Initialized=True 120: Position=r2 État initial 120: Position=r2 … Time=0 Position=r5 Time=0 Position=undefined … Goto(c1, r3) 150: Position=r3 Goto(c1, p1) InitCamera() Time=0 Time=90 Position=r5 Position=r5 Initialized=True $AdvTemps$ 90: Initialized=True … …
(Suite) … Time=0 Time=0 Goto(r5, r2) Initial State Time=0 Position=r5 InitCamera() Position=undefined Initialized=False Position=undefined Initialized=False Goto(r5, r2) Initial State 90: Initialized=True 120: Position=r2 … 120: Position=r2 Time=0 Position=r5 Initialized=False $AdvTemps$ Time=90 Position=undefined Initialized=True 120:+ Position=r2 $AdvTemps$ Time=130 Time=120 Time=120 $AdvTemps$ Position=r2 Initialized=False HasPicture(r2) Position=r2 TakePicture() Position=r2 Initialized=True 130: HasPicture(r2)=True 130: Initialized=False [120,130] Position=r2
Extracted Solution Plan Goto(r5, r2) InitializeCamera() TakePicture(r2) 40 60 90 120 Time (s)