ia41 rapport

13
Université de technologie de Belfort Montbéliard Concepts fondamentaux en Intelligence Artificielle et langages dédiés. Responsable de l’UV : M. Lauri Fabrice 2009 Delirium 2 GI01 - Semestre Automne 2009 Coniglio Christophe, De Col Sébastien, Roussel Xavier, Vincent Jeremy

Upload: prince-godasse-okitembo

Post on 10-Dec-2015

217 views

Category:

Documents


1 download

DESCRIPTION

bUSINESS Intelligence

TRANSCRIPT

Page 1: Ia41 Rapport

Université de technologie de Belfort Montbéliard

Concepts fondamentaux en Intelligence Artificielle et langages dédiés.

Responsable de l’UV : M. Lauri Fabrice

2009

Delirium 2 GI01 - Semestre Automne 2009

Coniglio Christophe, De Col Sébastien, Roussel Xavier, Vincent Jeremy

Page 2: Ia41 Rapport

- 2 -

Sommaire

Introduction ....................................................................................................................................... 3

I. Compréhension du sujet ................................................................................................................. 4

1. Fonctionnement du jeu.......................................................................................................... 4

2. Projet...................................................................................................................................... 4

a. Objectif du projet ............................................................................................................... 4

b. Problématiques liées au déplacement du mineur ............................................................. 5

II. Développement du projet .............................................................................................................. 6

1. Algorithme global (réaction du mineur)................................................................................. 6

2. Algorithme de création de carte ............................................................................................ 7

3. Algorithme de l’exploration……………………………………………………………………………………………….8

4. Algorithme a star……………………………………………….. …………………………………………………………….9

III. Détails de l’application................................................................................................................ 10

1. Les cartes du jeu................................................................................................................... 10

2. Avenir de l’application ......................................................................................................... 10

Conclusion........................................................................................................................................ 11

Annexes............................................................................................................................................ 12

Page 3: Ia41 Rapport

- 3 -

Introduction

Dans le cadre de l’UV Concepts fondamentaux en Intelligence Artificielle et

langages dédiés (IA41), la réalisation d’un projet parmi trois nous a été confiée. Nous

avons choisi le jeu Delirium 2, qui nous à paru le plus intéressant. Au sein de ce rapport,

nous allons en détailler la conception.

L’objectif du jeu est le déplacement d’un mineur qui a pour but de rechercher des

diamants dans une carte prédéfinie, tout en évitant les ennemis ou les chutes de pierres.

Une fois le nombre de diamants nécessaires acquis, le mineur a la possibilité de se rendre à

la sortie afin de rejoindre un niveau supérieur.

Le but de ce projet, fut donc de réaliser une intelligence artificielle à implanter à

mineur afin qu’il ait la possibilité de se déplacer seul sans intervention humaine sur la carte

et ainsi, remplir ses objectifs sans se faire tuer.

Nous détaillerons donc dans ce rapport les différentes étapes qui nous ont permis de

mener à bien la réalisation du projet.

Page 4: Ia41 Rapport

- 4 -

I. Compréhension du sujet

1. Fonctionnement du jeu

L’application Delirium 2 est un jeu dans lequel le joueur incarne un mineur évoluant au

sein d’une carte. Ce mineur possède un certain nombre de diamants à trouver dans un

temps imparti. Afin de lui rendre la tache plus compliquée, bon nombre d’ennemis

essayeront de le tuer. Le mineur se déplace dans des cartes plus ou moins complexes,

parfois étant de véritables labyrinthes. Ci-après, une capture du jeu.

Ici, le mineur découvre progressivement la carte en dévorant ses parties inexplorées

afin d’atteindre son objectif.

2. Projet

a. Objectif du projet

L’objectif de ce projet est donc de développer une intelligence artificielle à

implanter au mineur afin que celui-ci puisse terminer les différents niveaux de la partie

sans intervention humaine. Pour ce faire, il a fallu créer différents algorithmes afin de

Page 5: Ia41 Rapport

- 5 -

fournir les données nécessaires à un prédicat déjà existant (move) provoquant le

déplacement du mineur.

b. Problématiques liées au déplacement du mineur

Afin que le mineur puisse mener à bien tous ses objectifs, il a fallu nous pencher

sur différentes problématiques, afin de trouver un moyen de les résoudre. Ainsi, la

première question qui nous est venu à l’esprit fut : « Comment le mineur sait où se

déplacer ». Pour répondre à cela, nous avons envisagé une méthode s’adaptant à toutes les

valeurs prises par le setViewPerimeter.

Nous sous somme alors donné comme objectif que le mineur doit être capable de

finir un maximum de cartes avec un minimum d’informations. L’idéal serait de fixer le

setViewPerimeter à 2 c'est-à-dire que si le mineur est placé au milieu d’une carte il ne voit

que 2 cases autour de lui.

C’est pour cette raison que nous avons concentrer notre travail sur la création d’une

carte à partir des informations données par la fonction move et l’exploration de la carte.

De plus, nous avons travaillé afin que le mineur puisse se déplacer d’un point à un

autre de façon optimal grâce à l’implémentation de l’algorithme astar.

Page 6: Ia41 Rapport

- 6 -

II. Développement du projet

1. Algorithme global (réaction du mineur)

Ci-après, l’algorithme de réaction du mineur. C’est ainsi que le mineur réagira à chaque

instant et après chaque déplacement dans la partie. Cet algorithme régit complètement les

réactions du mineur et c’est en suivant cette démarche qu’il mènera à bien tous ses

objectifs.

Algorithme global

Création de la carte (voir utilité dans le I. 2. B.)

//Permet au mineur d’obtenir une carte complète du monde exploré

SI un chemin de direction est préenregistré dans la liste des coordonnées, ALORS aller au

premier point et le supprimer de la liste.

//Permet au mineur de se déplacer vers la direction souhaitée

SINON SI on a suffisamment de joyaux ET que la sortie a été découverte ALORS

enregistrer les directions pour y aller et se rendre à la première direction et la supprimer de

la liste

//En cas de fin de niveau (tous les joyaux récupérés), on se dirige vers la sortie

SINON SI on n’a pas suffisamment de joyaux et que le plus proche est accessible

ALORS enregistrer les directions pour y aller et se rendre à la première direction et la

supprimer de la liste

//Le mineur recherche dans la carte (créée au début de l’algorithme) les coordonnées du

diamant le plus proche afin de s’y rendre

SINON SI on ne connaît pas les quatre coins de la carte ALORS aller explorer

SINON SI des cases restent inconnues ALORS aller directement les découvrir

//Permet de compléter la carte construite au début de l’algorithme

SINON Explorer aléatoirement la carte (ce cas apparait seulement dans les cas extrême)

//Permet au mineur de ne pas rester inerte. En effet, de la sorte, il continuera à se déplacer.

C’est en nous basant sur cet algorithme de base que nous avons acquis une certaine

compréhension de la démarche à suivre afin que le mineur se déplace judicieusement.

Page 7: Ia41 Rapport

- 7 -

2. Algorithme de création de carte

Le prédicat permettant la création de la carte prend en entrée la liste fournie au départ.

C'est-à-dire, les cases autour du mineur, sa position dans cette liste, la position X et Y, la

carte déjà enregistrée, et le Size qui correspond au nombre de cases en tout sur une ligne.

La fonction enregistre seulement les informations situées à trois cases à gauche et trois

cases à droite du mineur. Par contre en hauteur, toutes les cases situées dans cet intervalle

sont enregistrées.

Cet algorithme retourne ainsi une liste prenant pour valeurs des chiffres correspondant

aux différentes valeurs des obstacles ou objectifs que le mineur rencontrera. (Par exemple

un mur, ou un ennemi, …).

Il faut noter aussi que la fonction stocke sous la valeur -10 les cases qui sont encore

non découvertes.

Par la suite, il sera donc plus aisé de se déplacer fonction de cette liste plutôt que de

travailler ‘’à l’aveugle’’.

En partant du principe que le mineur ne possède pas la totalité de la carte en paramètre,

à chaque déplacement, il continuera d’enregistrer toutes les informations qui lui sont

nécessaires. De ce fait, au fur et à mesure que le mineur se déplace, il aura à sa disposition

une carte constamment mise à jour, ce qui lui permettra d’agir en conséquence.

Page 8: Ia41 Rapport

- 8 -

3. Algorithme de l’exploration

Etant donné que le mineur ne connaît pas la carte il doit commencer par explorer afin

de découvrir l’emplacement des diamants et trouver la sortie.

Pour ceci nous divisons la fonction exploration en 3 parties.

-Tout d’abord nous recherchons les coins inférieurs droits :

Pour ceci nous partons de la case la plus proche du coin inférieur droit et nous utilisons

le astar. Si le astar ne trouve pas de chemin, nous recommençons en supprimant la case

déjà testée, ainsi de suite jusqu’à ce qu’on arrive à la case où est situé le mineur. Si c’est le

cas cela signifie qu’il est en cet instant impossible de découvrir le coin supérieur droit.

-Ensuite nous chercherons le coin inférieur droit :

C’est le même principe que pour le coin supérieur droit mais cette fois, nous

commençons par la case la plus proche du coin inférieur droit.

-Pour finir nous chercherons toutes les cases non explorées :

Ce sont les cases qui ont la valeur -10. A cet instant la fonction qui crée la carte l’a fait

complètement mais avec de nombreuses cases de valeur -10, il reste donc à les explorer.

Pour ceci nous chercherons la case qui a la valeur -10 la plus proche et nous nous y

déplaçons.

Page 9: Ia41 Rapport

- 9 -

4. Algorithme a star

L’algorithme ‘’a star’’ est celui qui nous a permis de créer le déplacement du

mineur. En effet, grâce à cela, nous sommes en mesure de fournir au mineur une

coordonnée précise où se déplacer sur la carte.

Pour ce faire, nous utiliserons deux listes : ‘’ l’open List ’’ et la ‘’closed List’’. Ensuite, on

opère par récurrence sur la variable ayant le plus petit Poids dans l’open List et on la place

dans la closed List jusqu’à ce qu’on tombe sur une variable correspondant aux

coordonnées demandées. Enfin, on remonte les coordonnées à l’envers prises dans la

closed List pour retrouver le chemin complet.

De plus nous avons rajouté des cases spéciales qui augmentent anormalement le poids de la

variable, ce qui permet à cet algorithme d’éviter de faire le tour de cette case mais il

trouvera quand même un chemin si jamais on l’oblige à aller dans ce genre de zone.

Exemple d’une variable (Xp,Yp,X,P,G,H,P)

X, Y correspondent aux coordonnées de la case.

Xp, Yp, coordonnée du père. C'est-à-dire, la case juste avant

P, la distance parcourue par le mineur depuis le point d’origine.

H, l’heuristique. Il correspond à la distance à vol d’oiseau jusqu’à la case ‘’ objectif ’’.

P, le poids qui se calcule ainsi : P=G+H+S, où S représente le poids des cases spéciales.

Généralement S est à 0.

Page 10: Ia41 Rapport

- 10 -

III. Détails de l’application

1. Les cartes du jeu

Afin de mener à bien notre projet, nous avons décidé de créer nous même nos

propres cartes. En effet, les cartes d’origine étant trop complexes, nous avons privilégié le

fait de vouloir montrer les fonctionnalités de notre programme dans un environnement

compatible à ce que nous avons créé.

Ceci nous permet donc de tester de façon optimale notre programme afin d’en

corriger d’éventuelles erreurs. Ceci permet également de montrer les fonctionnalités

acquises pour le mineur, plutôt que de la faire évoluer dans un environnement complexe

dont toutes les fonctions ne sont pas enclines à fonctionner.

2. Avenir de l’application

La solution que nous avons apportée permet déjà de gérer de nombreux cas complexes.

Cependant, de nombreuses améliorations sont encore réalisables. Malheureusement, par

manque de temps, celles-ci n’ont pu être implantées :

-Nous ne gérons que les ennemis statiques, il faudrait l’améliorer en réalisent une fonction

capable d’éviter des ennemis en mouvement

- La gestion des rochers tombants n’est pas optimale. De plus, il n’y a pas d’anticipation

quant à la modification de l’environnement du à la chute de ces pierres.

Page 11: Ia41 Rapport

- 11 -

Conclusion

Ce projet fut très instructif à réaliser. En effet, il nous a permis d’approfondir nos

connaissances en prolog et ainsi, de nous fournir un exemple concret de développement

d’intelligence artificielle.

Il nous a également permis de mettre en application les notions que nous avons

acquises pendant ce semestre. Afin de rendre possible la réalisation du projet, de

nombreuses recherches ont été nécessaires. Ainsi, de nouvelles notions telles que l’étude

de l’algorithme a star nous apporte un véritable plus dans notre parcours futur.

Page 12: Ia41 Rapport

- 12 -

Annexes

Ci-après, quelques situations intéressantes en image.

Il est intéressant de voir qu’ici, le

mineur, après avoir récupéré le

diamant, ne restera pas coincé dans le

mur qui se trouve face à lui. En effet,

ceci est du au fait que notre

algorithme prend en compte le fait de

ne pas repasser deux fois au même

endroit, sans quoi le mineur ne

pourrait se déplacer qu’entre les cases

(8,4) et (8,7).

Dans cette situation, il est intéressant de

constater que malgré le fait que le mineur soit

en mesure de voir les diamants inaccessibles,

il va passer outre afin de se rendre vers le seul

disponible. Ceci évite ainsi qu’il ne soit

bloqué et ne puisse joindre la sortie.

Page 13: Ia41 Rapport

- 13 -

Enfin, tel que nous pouvons le voir ici, dans cette situation, notre programme est capable

de faire un choix quant au choix des

diamants à récolter. En effet, sans ce choix

particulier, le mineur se verrait libérer

certains monstres, et ainsi se faire tuer.

C’est pour cela que cette carte est

intéressante. Non seulement notre

programme va récupérer les diamants

nécessaires pour passer au niveau suivant,

mais de plus, il va éviter de libérer les

ennemis, ainsi que la chute des diamants sur

le mineur.