Recherche de chemin et labyrinthe

Slides:



Advertisements
Présentations similaires
Explorer un espace d’états
Advertisements

Introduction à l’Algorithmique
CSI 4506: Introduction à l’intelligence artificielle
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département dinformatique et de génie logiciel Édition Septembre 2009.
TD0 - Rappels. Acquis du programme 1 ère année Analyser et modéliser : un problème, une situation ; Imaginer et concevoir : une solution algorithmique.
CSI 4506: Introduction à l’Intelligence Artificielle
1 UE Intro Opti L3 INFO UPSud Programmation linéaire en variables entières (ou mixtes) : résolution approchée par heuristique
Construire les premiers outils pour structurer sa pensée.
AUTO - EVALUATION DE L'ELEVE GENERALITES POURQUOI ? - Permettre à l'élève de mesurer ses réussites, ses difficultés et d'identifier ses besoins. - L 'élève.
L’ESPRIT DU NOUVEAU PROGRAMME. SERIE SCIENCES ET TECHNOLOGIES DU MANAGEMENT ET DE LA GESTION 1 Document élaboré dans le cadre du cercle de réflexion académique.
Tranches de vie d’une dinde Automne 2016 Prof : Simon Plouffe, IUT.
TRAAM Académie de Limoges1 TRAvaux Académiques Mutualisés Comment intégrer à l’enseignement de la technologie les services mis à la disposition des élèves.
La résolution de problèmes ouverts au cycle 2 et cycle 3 « Mettre les élèves en situation d’essayer, conjecturer, tester, prouver. » (IREM de Lyon)
Outils de Recherche Opérationnelle en Génie MTH 8414A
Une grille d’évaluation
Première présentation
ORDRE DU JOUR La didactique en trois temps Période de remue-méninges
Thymio dans un labyrinthe
Faire une bonne présentation
Gestion de version centralisée et décentralisée
Le chiffrement de Vigenère :
Quelques ressources sur la modélisation
Corrigé des pages 208 et 209.
Présentation générale Marc Gengler
Université Abou Bakr Belkaid Faculté des Sciences Département d’informatique Algorithmique Avancée et Complexité Chap5: Les méthodes de résolution exactes.
Algorithmique Langage C
Disposition de titre Sous-titre.
Disposition du titre Sous-titre.
IFT 615 – Intelligence artificielle Recherche heuristique
Ingénierie pédagogique
Disposition du titre Sous-titre.
Domaine: Mesure R.A.: Je peux additionner et soustraire des monômes.
Chapitre 2: Les équations et les inéquations polynômes
MTH 6414A Exemple de recherche avec taboux
Plan Introduction Parcours de Graphe Optimisation et Graphes
Calcul littéral 2.
Des alternatives aux ateliers tournants
LES PRINCIPES DE LA THERMODYNAMIQUE
Université Abou Bakr Belkaid Faculté des Sciences Département d’informatique Algorithmique Avancée et Complexité Chap7: Les méthodes de résolution exactes.
Le Numérique pour collaborer
Plan Introduction Parcours de Graphe Optimisation et Graphes
Séance et séquence d’apprentissage en SEGPA
Grilles Répertoires Philippe TRIGANO.
Ruoqi He & Chia-Man Hung
Plan Introduction Parcours de Graphe Optimisation et Graphes
Les Gratte-ciel.
CHAPITRE 8 Equations, Inégalités
Disposition du titre Sous-titre.
Disposition du titre Sous-titre.
Disposition du titre Sous-titre.
Information, Calcul, Communication
Disposition du titre Sous-titre.
Disposition du titre Sous-titre.
RABAH M ed Ali 2018/2019
La démarche scientifique
Ceintures de logique Compétences maternelle Compétences cycle 2
Disposition du titre Sous-titre.
Disposition du titre Sous-titre.
Disposition du titre Sous-titre.
Disposition du titre sous-titre.
Disposition du titre Sous-titre.
Liaison de faible Résistance La pile est déchargée rapidement
Calcul en cycle 3 Canevas de l’AP (9h)
Le langage oral A M MOBILISER LE LANGAGE DANS TOUTES SES DIMENSIONS: A
Chapitre 2 Résolution des Problèmes et Jeux. Objectifs  Comment ? – Modéliser un Problème. – Modéliser un Jeu.  Comment ? – Passer d’un état à un autre.
Aide à la décision M. Barbot – 09/03/2016 – EFREI
Disposition du titre Sous-titre.
Disposition du titre Sous-titre.
Déplacements intelligents
La programmation dynamique
Transcription de la présentation:

Recherche de chemin et labyrinthe (Starcraft 2) vincent.thomas@loria.fr Atelier ISN 2019 – 7 Mars 2019

Plan Structure de labyrinthe Recherche de chemin Extensions Algorithme de Lee / la vague Extensions Dijkstra A * Autres problèmes

Structure de labyrinthe Cf Code python fourni Tableau à deux dimensions laby = [] laby +=[[1,1,1,1,1,1,1,1]] laby +=[[1,0,0,1,0,0,0,1]] laby +=[[1,0,0,1,0,1,0,1]] laby +=[[1,0,1,1,1,1,0,1]] laby +=[[1,0,0,0,0,0,0,1]] laby +=[[1,1,0,1,1,0,1,1]] Laby +=[[1,1,1,1,1,1,1,1]] transpose(laby) --------------------------- laby[x][y] [0] [1] [2] [3] [0][0] [0][1] [0][2] [1][0] [2][0] [3][0]

Plan Structure de labyrinthe Recherche de chemin Extensions Algorithme de Lee / la vague Extensions Dijkstra A * Autres problèmes

Recherche de chemins Arrivée Départ

Recherche de chemins Quel est le chemin le plus court ?

Recherche de chemins Quel est le chemin le plus court ? Pourquoi difficile ? Solution possibles ?

Recherche de chemins Quel est le chemin le plus court ? Pourquoi difficile ? 1. Enumérer chemins Explosion combinatoire 2. Raisonner sur distances Quelle info trivial ?

Algorithme de propagation Recherche de chemins Algorithme de propagation

Algorithme de propagation Recherche de chemins 1 Algorithme de propagation

Algorithme de propagation Recherche de chemins 1 2 Algorithme de propagation

Algorithme de propagation Recherche de chemins 1 2 3 Algorithme de propagation

Algorithme de propagation Recherche de chemins 1 2 3 4 Algorithme de propagation

Algorithme de propagation Recherche de chemins 1 2 3 5 4 Algorithme de propagation

Algorithme de propagation Recherche de chemins 1 2 3 5 6 4 Algorithme de propagation

Algorithme de propagation Recherche de chemins 1 2 3 5 6 4 7 Algorithme de propagation

Algorithme de propagation Recherche de chemins 1 2 3 5 6 4 7 8 Algorithme de propagation

Algorithme de propagation Recherche de chemins 1 2 3 5 6 4 9 7 8 Algorithme de propagation

Algorithme de propagation Recherche de chemins 1 2 3 10 5 6 4 9 7 8 Algorithme de propagation

Algorithme de propagation Recherche de chemins 1 2 11 3 10 5 6 4 9 7 8 Algorithme de propagation

Algorithme de propagation Recherche de chemins 1 12 14 13 2 11 15 3 10 5 6 4 9 7 8 Algorithme de propagation

Algorithme de propagation Recherche de chemins 12 14 13 1 11 15 10 6 9 7 8 Algorithme de propagation

Algorithme de propagation Recherche de chemins 1 12 14 13 2 11 15 3 10 5 6 4 9 7 8 Algorithme de propagation

Algorithme de propagation Recherche de chemins 12 14 13 1 11 15 10 9 Algorithme de propagation

Coder en python Démarche Intérêt [X] Savoir résoudre à la main [ ] Comprendre la stratégie mise en oeuvre [ ] Ecrire algorithme de haut niveau [ ] Traduire en commentaire [ ] Ajouter le code entre les commentaires Intérêt Séparer code de l'algo et réduire bugs Avoir code correctement commenté

Algorithme de propagation Recherche de chemins 1 12 14 13 2 11 15 3 10 5 6 4 9 7 8 Algorithme de propagation

Algorithme de propagation Recherche de chemins 12 14 13 1 11 15 10 9 Algorithme de propagation

Messages à emporter 1. Algorithme de recherche de chemin Principe de propagation de valeur (accessible) Algorithme de Lee Gestion de frontières (liste ouverte) 2. Manière de coder Comprendre le probleme Résoudre exemple Ecrire les commentaires Ecrire le code

Plan Structure de labyrinthe Recherche de chemin Extensions Algorithme de Lee / la vague Extensions Dijkstra A * Autres problèmes

3 Extensions Ajoute des couts aux arcs Accélérer la recherche Dijkstra Accélérer la recherche Algorithme A* Etendre à d'autres cadres Théorie des graphes

Cout = difference altitude Dijkstra Edsger Dijkstra (1930-2002) Tableau de coûts Exemple altitude sur les cases Ajoute coût de la case Murs 1 2 3 Cout = difference altitude

Coût = différence altitude Dijkstra Principe Développe cases distance plus faible Met à jour si valeur est meilleure Algo Trier la liste ouverte par coût Vérifier chemin réalisable Garantie Car coûts > 0 1 2 3 Coût = différence altitude

Coût = différence altitude Dijkstra Principe Développe cases distance plus faible Met à jour si valeur est meilleure 1 2 3 Coût = différence altitude Distances

Coût = différence altitude Dijkstra Principe Développe cases distance plus faible Met à jour si valeur est meilleure 1 2 3 Coût = différence altitude 1 2 3 4 6 5 8 7 10 11 12 Distances

Coût = différence altitude Dijkstra Principe Développe cases distance plus faible Met à jour si valeur est meilleure 1 2 3 Coût = différence altitude 1 2 3 4 6 5 8 7 10 11 12 Distances 14

3 Extensions Ajoute des couts aux arcs Accélérer la recherche Dijkstra Accélérer la recherche Algorithme A* Etendre à d'autres cadres Théorie des graphes

Algorithme de propagation Algorithme A* Algorithme de propagation

Algorithme de propagation + optimisme Algorithme A* 1 Algorithme de propagation + optimisme

Algorithme de propagation + optimisme Algorithme A* 1 +6 +8 Algorithme de propagation + optimisme

Algorithme de propagation + optimisme Algorithme A* 1 Algorithme de propagation + optimisme

Algorithme de propagation + optimisme Algorithme A* 2 1 Algorithme de propagation + optimisme

Algorithme de propagation + optimisme Algorithme A* 2 1 +5 +8 Algorithme de propagation + optimisme

Algorithme de propagation + optimisme Algorithme A* 2 1 +5 +8 Algorithme de propagation + optimisme

Algorithme de propagation + optimisme Algorithme A* 3 2 1 Algorithme de propagation + optimisme

Algorithme de propagation + optimisme Algorithme A* 3 2 1 Algorithme de propagation + optimisme

Algorithme de propagation + optimisme Algorithme A* 4 3 2 1 Algorithme de propagation + optimisme

Algorithme de propagation + optimisme Algorithme A* 4 3 2 1 Algorithme de propagation + optimisme

Algorithme de propagation + optimisme Algorithme A* 4 5 3 2 1 Algorithme de propagation + optimisme

Algorithme de propagation + optimisme Algorithme A* 4 5 3 2 1 Algorithme de propagation + optimisme

Algorithme de propagation + optimisme Algorithme A* 6 4 5 3 2 1 Algorithme de propagation + optimisme

Algorithme de propagation + optimisme Algorithme A* 6 4 5 3 2 1 Algorithme de propagation + optimisme

Algorithme A* 6 4 5 3 2 1

Algorithme A* 6 4 5 3 2 1 Conclusion ?

Algorithme A* 6 4 5 3 2 1 Conclusion ?

Changement labyrinthe

Changement labyrinthe 6 4 5 3 2 1 Algorithme de propagation + optimisme

Algorithme de propagation + optimisme Algorithme A* 6 4 5 3 2 1 Algorithme de propagation + optimisme

Algorithme de propagation + optimisme Algorithme A* 6 4 5 3 2 1 Algorithme de propagation + optimisme

Algorithme de propagation + optimisme Algorithme A* 6 4 5 3 2 1 +4 +8 Algorithme de propagation + optimisme

Algorithme de propagation + optimisme Algorithme A* 6 4 5 3 2 1 +4 +8 Algorithme de propagation + optimisme

Algorithme de propagation + optimisme Algorithme A* 6 4 5 3 2 1 Algorithme de propagation + optimisme

Algorithme de propagation + optimisme Algorithme A* 6 4 5 3 2 1 Algorithme de propagation + optimisme

Algorithme de propagation + optimisme Algorithme A* 6 4 5 3 2 1 Algorithme de propagation + optimisme

Algorithme de propagation + optimisme Algorithme A* 6 4 5 3 2 1 Algorithme de propagation + optimisme

Algorithme de propagation + optimisme Algorithme A* 6 4 5 3 2 1 Algorithme de propagation + optimisme

Algorithme de propagation + optimisme Algorithme A* 6 4 5 3 2 1 Algorithme de propagation + optimisme

Algorithme A* Démo étudiant DUT

3 Extensions Ajoute des couts aux arcs Accélérer la recherche Dijkstra Accélérer la recherche Algorithme A* Etendre à d'autres cadres Théorie des graphes

Problème labyrinthe Structure particulière De manière plus générale Cases côtes à côtes Connexité fixée Coûts de 1 De manière plus générale Graphe (Noeuds + Arcs) Algorithmes identiques Vraie question : Modélisation du probleme

Problème Robot qui va chercher un café 3 pièces qui se suivent Cafetière au fond Possibilité de déplacer, prendre, poser

Problème Robot qui va chercher un café Modélisation du problème

Problème Robot qui va chercher un café p1 c0 p2 c0 p3 c0 p1 c1 p2 c1

Problème p1 c0 p2 c0 p3 c0 p1 c1 p2 c1 p3 c1 def actions(): return(['gauche','droite','prendre','poser']) def etats(): return([(1,0),(1,1),(2,0),(2,1),(3,0),(3,1)]) def transition(s,a): (pos,cafe)=s if (a=='gauche'): if (pos>1): pos=pos-1 if (a=='droite'): if (pos<3): pos=pos+1 if (a=='prendre'): if (pos==3): Cafe=1 if (a=='poser'): Cafe=0 return(pos,cafe) p1 c0 p2 c0 p3 c0 p1 c1 p2 c1 p3 c1

Probleme : Sokoban Sokoban A faire Caisse et murs Amener les caisses Modéliser le probleme Appliquer algo Heuristique si A*

Problèmes : puzzle solo Rush hour Taquin Rubick’s cube

Problèmes : puzzle solo Dr Eureka (blue orange)

Et beaucoup d'autres Thinkfun / Smartgames Turnstile