commit
This commit is contained in:
parent
a387e9bff0
commit
8bc5f97582
1 changed files with 10 additions and 1 deletions
|
@ -15,10 +15,19 @@
|
|||
|
||||
\section{Introduction}
|
||||
|
||||
Le mastermind est un jeu de société à deux joueurs dont le but est de trouver une suite de couleurs. Le premier joueur doit trouver la bonne suite, tandis que le deuxième lui donne des infomations sur ses tentatives (couleurs bien placées, mal placées et non présentes). Le jeu que nous avons implémenté est légèrement plys compliqué. Il s'aggit de l'ultra mastermind, dans ce jeu le but n'est pas de trouver une suite de couleurs mais une phrase en ASCII sur 255 bits. Pour cela nous avons utilisé un algorithme génétique que nous expliquerons plys tard. Nous avons donc utilisé le langage python pour implémenter notre algorithme. Dans ce compte rendu nous commencerons par expliquer notre algorithme, ensuite nous présenterons notre implémentation, nous ferons une analyse des différents paramètres de l'algorithme, et enfin nous mettrons en perspectiver ce projet avec des cas de figure réels.
|
||||
Le mastermind est un jeu de société à deux joueurs dont le but est de trouver une suite de couleurs. Le premier joueur doit trouver la bonne suite, tandis que le deuxième lui donne des informations sur ses tentatives (couleurs bien placées, mal placées et non présentes). Le jeu que nous avons implémenté est légèrement plus compliqué. Il s'agit de l'ultra mastermind, dans ce jeu le but n'est pas de trouver une suite de couleurs mais une phrase en ASCII sur 255 bits. Pour cela nous avons utilisé un algorithme génétique que nous expliquerons plus tard. Nous avons donc utilisé le langage python pour implémenter notre algorithme. Dans ce compte rendu nous commencerons par expliquer notre algorithme, ensuite nous présenterons notre implémentation, nous ferons une analyse des différents paramètres de l'algorithme, et enfin nous mettrons en perspective ce projet avec des cas de figure réels.
|
||||
|
||||
\section{Description du problème}
|
||||
|
||||
Dans le cadre de ce projet nous avons donc dû réaliser une "intelligence artificielle" qui devrait retrouver une chaîne de caractères de taille fixe (puis de taille variable) codée en ASCII sur 8 bits.
|
||||
|
||||
\section{Algorithme génétique}
|
||||
|
||||
Les algorithmes génétiques sont des algorithmes qui reposent sur la théorie de l'évolution de Charles Darwin. En effet, les principales étapes d'un algorithme générique sont la sélection naturelle, la mutation et la reproduction, ce qui permet à des individus de s'adapter à leur environnement, comme le suggère la théorie de l'évolution. Dans notre cas nous utiliserons un algorithme générique pour faire "muter" un chaîne de caractère jusqu'à lui faire atteindre une chaîne de caractère non connue du programme. Dans un algorithme génétique on fait évoluer une population d'individus, la nature des individus change selon les cas de figure.
|
||||
|
||||
\section{Présentation de la solution choisie}
|
||||
|
||||
Afin de résoudre le problème posé nous avons donc dû mettre en place un algorithme génétique. Notre population sera donc composée de chaînes de caractères que nous ferons évoluer. Notre algorithme se décompose en 3 grandes étapes : la sélection, la reproduction et enfin les mutations. Nous utiliserons des fonctions de fitness dans la sélection afin d'indiquer au programme lesquels de ses individus sont plus "performants" que d'autres. Nous utiliserons 3 fonctions de "fitness" différentes : une qui prendra en compte la différences entre les codages des deux chaînes, la seconde prendra en compte les caractères bien placés et mal placés et enfin la troisième utilisera la distance de Levenshtein. Pour les mutations nous modifierons des caractères aléatoires sur des individus aléatoires (selon un coefficient), nous en ajouterons ou en retirerons dans le cas des chaîne de caractère à taille variable. Et enfin pour la reproduction nous ferons la concaténation des parties de deux individus choisis aléatoirement dans la population. Ces trois étapes nous permettront d'obtenir la phrase cachée.
|
||||
|
||||
\end{document}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue