• Document: TP d Intelligence Artificielle
  • Size: 269.2 KB
  • Uploaded: 2018-12-08 21:16:32
  • Status: Successfully converted


Some snippets from your converted document:

Master 1 Informatique FÈVRE Jean-Charles TP IA GABORIAU Simon TP d’Intelligence Artificielle Ce projet d’intelligence artificielle consiste à représenter un environnement et à le sécuriser à l’aide d’un robot. Pour cela, le robot est équipé d’un certain nombre de capteurs et est capable de se déplacer et de détecter les éléments autour de lui. Il dispose en plus de sondes qu’il peut déposer et reprendre à volonté pour l’aider à sécuriser le monde. L’environnement à sécuriser est clos (il peut éventuellement être accessible de l’extérieur par un nombre limité de portes) et peut contenir des obstacles que le robot peut déplacer, mais en aucun cas il ne peut voir derrière un obstacle ou une paroi. Enfin, le robot peut explorer le monde puis le sécuriser ou bien l’explorer et le sécuriser simultanément. Pour réaliser ce projet, le choix du ou des langages nous a été laissé libre. Nous avons utilisé deux langages : Prolog et Java. Le langage Prolog nous sert à définir le monde à explorer et les différentes contraintes de déplacement du robot, tandis que le Java nous sert essentiellement à réaliser l’interface graphique de notre monde et à interroger Prolog. Enoncé En plus des données qui figurent sur l’énoncé du TP, nous avons ajouté quelques règles à suivre : - les sondes sont des points qui surveillent dans un rayon alentour de 1. - une sonde fait une case - le robot détruit les sondes s'il passe dessus - le robot se déplace selon un quadrillage dans les directions haut, bas, gauche, droite - les cloisons sont définies sur les intersections de cases et sont infranchissables - le robot possède des "pinces" et peut déplacer les obstacles avec lui - le robot ne voit pas ce qu'il y a derrière les obstacles - le robot doit vérifier qu'il est passé partout dans le monde - le robot place les sondes, et il en possède autant qu’il le souhaite - il existe des portes de sortie (parois particulières) Prolog Prolog est un langage de programmation logique. Le but était de faire un langage de programmation qui permettait d'utiliser l'expressivité de la logique au lieu de définir pas à pas la succession d'instructions que doit exécuter un ordinateur. Prolog est utilisé dans de nombreux programmes d’intelligence artificielle. Un des avantages de Prolog est d’avoir ses syntaxe et sémantique très simples et claires (le but original était de procurer un outil pour les linguistes ignorant l’informatique). -1- Master 1 Informatique FÈVRE Jean-Charles TP IA GABORIAU Simon Une des particularités de prolog est que l'on peut construire une base de connaissance dans un ordre indéterminé. Prolog résoudra ensuite des séries de problèmes logiques. Nous avons donc réalisé la définition de notre monde en Prolog et Java ne fait qu’interroger Prolog afin de savoir quels sont les déplacements possibles pour notre robot. Le programme Prolog comporte 2 parties : la base de faits et la base de règles. La base de faits (aussi appelée base de connaissances en IA) décrit tous les éléments présents dans notre monde : la position du robot à l’état initial, les parois, les obstacles … La base de règles comporte les différentes règles dont dispose notre monde, il s’agit essentiellement de règles de déplacement de notre robot en fonction de la connaissance du monde. Constantes Notre programme Prolog utilise 4 constantes qui correspondent aux 4 directions de déplacement possibles : haut, bas, gauche et droite. La base de faits Notre base de faits comporte de nombreux prédicats que nous allons vous détailler ci-dessous : robot(nomRobot,coordX,coordY) : le robot nomRobot se trouve en (coordX,coordY). explore(coordX,coordY) : la case de coordonnées (coordX,coordY) a été explorée. obstacle(nomObstacle,coordX,coordY) : l’obstacle nomObstacle se trouve en (coordX,coordY). possedeObstacle(nomRobot,nomObstacle,coordX,coordY) : le robot nomRobot se trouve en (coordX,coordY) et possède l’obstacle nomObstacle. sonde(nomSonde,coordX,coordY) : la sonde nomSonde se trouve en (coordX,coordY). paroi(coordX1,coordY1,coordX2,coordY2) : une paroi se situe entre les cases (coordX1, coordY1) et (coordX2, coordY2). En effet, nous avons décidé de modéliser une case comme une intersection entre 2 cases, ce qui fait qu’une paroi n’a pas d’épaisseur proprement dit. L’affichage d’une paroi sera expliqué dans la partie Java plus bas. porte(coordX1,coordY1,coordX2,coordY2) : une porte se situe entre les cases (coordX1, coordY1) et (coordX2, coordY2).

Recently converted files (publicly available):