Jean-François Landry Département d’informatique

Slides:



Advertisements
Présentations similaires
Fabrice Lauri, François Charpillet, Daniel Szer
Advertisements

« Systèmes électroniques »
Iceberg Cube Ne calculer que les cellules du datacube dont le nombre d'occurences satisfait la condition : HAVING COUNT(*) >= minsup Motivation Supposons.
Introduction : plasticité des IHMs – Page 1 IHM et plasticité 1 IHM et Différents supports Différents utilisateurs Différents environnements Problématique.
Programme de seconde 2009 Géométrie
Raisonnement et logique
Réalisation dun compréhenseur multidimensionnel Projet Master Informatique 1ère année Année 2005 Christophe MOUFLIN Jérôme COPPENS.
GEF 243B Programmation informatique appliquée
Articuler des programmes complémentaires autour d’un même site atelier
IFT313 Introduction aux langages formels
Programme de mercatique
Langage SysML.
Qu’est-ce qu’un ordinateur ?
CHRONOLOGIE DES ETAPES D’INDUSTRIALISATION
Université Paul Sabatier - Toulouse 3 - Département de GMP Enquête Insertion Professionnelle – Promotion
Réunion sur le projet du Busines Plan
Faculté I&C, Claude Petitpierre, André Maurer 1 Héritage par prototype Héritage dattributs ou de méthodes Héritage de constructeurs.
OCaml - Les listes L3 MI.
Réglage et protection des réseaux électriques
Quest-ce que la planification ? Planifier = Décider dun plan À partir dune base de connaissances sur les opérateurs possibles, on simule un grand nombre.
Principes de la technologie orientée objets
IFT 702 – Planification en intelligence artificielle Planification par recherche heuristique dans un espace d’états Froduald Kabanza Département d’informatique.
Module 7 : Géométrie algorithmique. 23/7/2007Géométrie algorithmique2 Plan du module Aire dun triangle Problème 361.
Initiation à la conception de systèmes d'information
Validation d’applications pour les Legos Mindstorms
Initiation aux bases de données et à la programmation événementielle
IFT313 Introduction aux langages formels
1 Initiation aux bases de données et à la programmation événementielle Cours N°9 : Gestion de la cohérence avec des sous-formulaires. Support de cours.
Renouveau : Développement de ressources Étude de cas « Ferme Kimbercote » Conférence canadienne sur lentreprise sociale 19 novembre 2009.
Complément Le diagramme des classes
Développer en C avec Eclipse Introduction Création d'un projet Ajout de fichiers Compilation Exécution Utiliser le débogueur Département dinformatique.
REFERENTIEL Référentiel des activités professionnelles : RAP
IFT 2251 Génie Logiciel Spécification de Processus Concurrents
IFT615 – Intelligence artificielle Planification temporelle
IFT 702 Planification en intelligence artificielle Contrôle de la recherche avec des réseaux de tâches hiérarchiques Froduald Kabanza Département dinformatique.
SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA.
Programmation linéaire en nombres entiers Algorithme de la subdivision successive («Branch and Bound Algorithm»)
1 CSI3525: Concepts des Languages de Programmation Notes # 4: Description Semantique des Languages.
CSI3525: Concepts des Languages de Programmation
Université de Sherbrooke
Chapitre 9 Les sous-programmes.
Chapitre 3 Syntaxe et sémantique.
Conception des Réalisé par : Nassim TIGUENITINE.
Simon Langevin Mathieu Poisson
Séance d’introduction
Séminaire Service Interoperability on Context Level in Ubiquitous Computing Environments Davide Bazzi IIUF Etude de larticle: Service Interoperability.
L’ORGANISATION DES ENSEIGNEMENTS
École dété de Guidel 2010 Outil national de positionnement Présentation Annie Journu.
Modélisation géométrique de base
Présentation de la méthode des Eléments Finis
Structures des données
© Sopra Group, 2001 / octobre 02 / Windows 2000 / p1 Windows 2000 Glossaire.
QCM 1 Windows 2000.
QCM 2 Windows 2000.
Paradigmes des Langages de Programmation
1 Architecture orientée service SOA Architecture orientée service SOA (Service Oriented Architecture)
DEMARCHE ERGONOMIQUE.
O-notation 1. Introduction 2. O-notation 3. Opérations 3.1 Somme 3.2 Produit 4. Règles générales 5. Exemple 6.Analyse des algorithmes récursifs 6.1 Dilatation.
INTRODUCTION.
H5 Harry a un chapeau et une chouette mais pas de balai Harry a un chapeau et une chouette mais pas de balai.
Supports de formation au SQ Unifié
OMRON ® Contrôle de mouvements 1. OMRON ® Contrôle de mouvements 2 CX-Position Démarrage d ’un nouveau projet Démarrez CX-Position, créez un nouveau projet.
Algorithmes et Programmation
IFT 702 – Planification en intelligence artificielle Planification par recherche dans un espace de plans Froduald Kabanza Département d’informatique Université.
Qu’est-ce que la planification ? Planifier = Décider d’un plan À partir d’une base de connaissances sur les opérateurs possibles, on simule un grand nombre.
Introduction Définir Planning. L’agent Planning. Représentation pour l’agent planning. Idées derrieres l’agent planning.
1 Spécifications de Problèmes. 2 Plan Définition Motivation Qualités attendues Types de formalismes Rappels du cours de programmation Spécifications structurées.
IFT 702 – Planification en intelligence artificielle Langage PDDL
IFT 702 – Planification en intelligence artificielle Langage PDDL
Froduald Kabanza Département d’informatique Université de Sherbrooke
Transcription de la présentation:

IFT615 – Intelligence artificielle PDDL : “Planning Domain Definition Language” Jean-François Landry Département d’informatique Université de Sherbrooke IFT615 – Été 2011

Objectifs Motivation d’une solution générique pour résoudre des problèmes de génération de plans. Comprendre la structure de PDDL. IFT615 – Été 2011

EXEMPLE D’APPLICATIONS

Exemple 1 : robot livreur de colis

Exemple 1 : robot livreur de colis (problème) État initial But p1 p2 p3 p4 O3 O1 O2 c1 robot c2

Exemple 1 : robot livreur de colis (solution) Solution : exécuter le plan suivant Aller à : p1 Prendre l’objet : o1 Aller à : c1 Aller à : c2 Aller à : p4 Déposer l’objet : o1 Aller à : p3 Prendre l’objet o2 Déposer l’objet : o2

Exemple 1 : un robot pour déplacer des objets (simulation)

Exemple 2 : monde des blocs (BlocksWorlds) Actions possibles: Prendre un bloc. Déposer un bloc. Problème : Trouver la séquence d’actions pour y arriver. Configuration initiale But D C B C A B A D

Exemple 2 : monde des blocs (Solution) État 0 État 1 État 2 État 3 D C D C C C A B A B A B D A B D État 5 État 6 État 4 D C C D C A B A B A B D

Exemple 3 : Mars Rovers Planifier des actions telles que: Contraintes: Collecter des données à divers sites d’intérêt. Se déplacer vers un site d’intérêt. Transmettre vers la Terre les données collectées. Contraintes: Énergie limitée (batteries). Incertitude sur les déplacements (durée + ressources). Fenêtre de faisabilités. Solution générique: On veut seulement donné un but. Le robot doit trouver le plan de lui-même.

Exemple 4 : livraison de colis

Comment résoudre ses problèmes? On pourrait écrire 4 programmes différents, chacun étant spécifique à un type de problème en particulier. Résolveur_RobotLivreur.cpp Problème Solution Résolveur_BlocksWorld.cpp Problème Solution Résolveur_MarsRover.cpp Problème Solution Résolveur_LivraisonColis.cpp Problème Solution

Comment résoudre ses problèmes de façon générique? Écrire un seul planificateur générique indépendant des problèmes. Écrire quatre (4) spécifications de problème. Domaine (actions) Planificateur générique But (problème) Plan (séquence d’actions) État Initial (connaissances sur l’environnement) IFT615 – Été 2010

Planification : modèle générique d’actions Goto(A, B) TakeObject(O, P) Position(Robot) = A Énergie >= k*distance(A,B) PositionObject(O) = P Position(Robot) = P Préconditions Préconditions Position(Robot) = B Énergie -= k * distance(A,B) Temps += distance(A,B) / v Position(O) = <non défini> RobotHave(O) = true Effets Effets

Génération des plans Mission Plan Déplacer(p1,p2) Déplacer(p1,p2) Pos=p1 E=100% T=0 Déplacer(p1,p2) Déplacer(p1,p2) Mission Livrer message m1 de p3 à p5 État initial Position = p1 Énergie = 100% Temps = 0s … Déplacer(p1,p2) Pos=p7 E=98% T=120 Pos=p2 E=99% T=60 Pos=p3 E=98% T=120 Prendre(m1,p3) … … Pos=p3 E=97% T=180,{m1} Déplacer(p3,p5) p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 Pos=p5 E=95% T=400,{m1} Plan SeDéplacer(p1, p3) PrendreMsg(m1, p3) SeDéplacer(p3, p5) Livrer(m1, p5) Livrer(m1,p5) Pos=p5 E=94% T=460,m1@p5

Langage pour un planificateur Il est possible de créer un langage pour un planificateur. Il suffit de décrire formellement : la description des actions possibles (préconditions / effets); la situation initiale; le but. La syntaxe doit être conviviale à l’utilisateur ET au planificateur, donc : 1) lisible et compréhensible par un humain; 2) analysable par un parseur LL ou LR : donc il faut pouvoir décrire le langage par une grammaire bien structurée.

Exemple : PDDL Basé sur la logique du premier ordre. PDDL = Planning Domain Definition Language. Langage utilisé lors des compétitions ICAPS (International Conference on Automated Planning and Scheduling) Basé sur la syntaxe de Lisp, donc facile à lire. Pour un domaine, on décrit : Les objets pouvant exister Les relations pouvant exister Pour chaque actions possible, on décrit: Le nom de l’action, les paramètres, les préconditions, les effets.

Exemple PDDL pour le monde des blocks a b (:action unstack :parameters (?x – block ?y - block) :precondition (and (on ?x ?y) (clear ?x) (handempty) :effects (and (not (on ?x ?y)) (not (clear ?x)) (not (handempty)) (holding ?x) (clear ?y)) (:action stack :parameters (?x – block ?y - block) :precondition (and (holding ?x) (clear ?y)) :effects (and (not (holding ?x)) (not (clear ?y)) (on ?x ?y) (clear ?x) (handempty)) (:action pickup :parameters (?x – block) :precondition (and (ontable ?x) (clear ?x) (handempty) :effects (and (ontable ?x) (clear ?x) (handempty) (holding ?x)) (:action putdown :parameters (?x – block) :precondition (holding ?x) :effects (and (not (holding ?x)) (ontable ?x) (clear ?x) (handempty))

Exemple livraison de colis (define (domain SimTransport) (:requirements :strips :equality :typing :fluents :durative-actions ) (:types location - object robot - object box - object ) (:predicates (robot-at ?r - robot ?l - location) (box-at ?b - box ?l - location) (box-on ?b - box ?r - robot) (link ?x - location ?y - location) (:functions (distance ?l1 - location ?l2 - location) (speed ?r - robot) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Goto : Navigation between 2 locations (:durative-action Goto :parameters(?r - robot ?from - location ?to - location) :duration (= ?duration (/ (distance ?from ?to) (speed ?r))) :condition(and (at start (robot-at ?r ?from)) ;;(over all (link ?from ?to)) :effect(and (at start (not (robot-at ?r ?from))) (at end (robot-at ?r ?to)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Load (:durative-action Load :parameters(?r - robot ?loc - location ?b - box) :duration (= ?duration 60) :condition(and (over all (robot-at ?r ?loc)) (at start (box-at ?b ?loc)) ) :effect(and (at start (not (box-at ?b ?loc))) (at end (box-on ?b ?r)) ;; Unload (:durative-action Unload (at start (box-on ?b ?r)) (at end (box-at ?b ?loc)) (at start (not (box-on ?b ?r)))