A propos

Voici un aperçu des principaux composants de notre application.

Serveur

Un serveur Python Flask qui héberge les intelligences artificielles en réseaux de neurones et en MCTS de notre application.

Client

Un client Flutter qui correspond à l'interface graphique de notre application.

Communication Client-Serveur

Une communication entre le client et le serveur fluide à l'aide d'une API Rest complète.

En apprendre plus

Fonctionnalités

Voici un aperçu des Fonctionnalités que propose notre application.

Un jeu fluide

Grâce à une communication client-serveur bien structuré, l'application est fluide.

Multi-Plateformes

Notre application est compatible avec IOS, Android et le Web.

Paramètres de jeu personnalisables

L'utilisateur peut choisir les types d'intelligences artificielles qu'il souhaite affronter ainsi que leur niveau de difficulté.

UI attrayante

Nous proposons une interface graphique agréable et facile d'utilisation pour l'utilisateur.

Des adversaires compétitifs

Le bon niveau des intelligences artificielles permet à l'utilisateur d'avoir de la compétition.

Explication des règles de jeu

Pour ceux qui découvrent le jeu, une explication détaillée des règles est disponible.

Intelligences Artificielles

Voici un aperçu des intelligences artificielles développées lors de ce projet.

Réseau de neuronnes

Pour notre projet Coeurs Artificiels nous avons implémenté une intelligence artificielle pour représenter les joueurs non humains. Cette intelligence artificielle est pour sa première version à base d’un réseau de neurones

Description de l'image
Représentation d’un simple réseau de neurones

Pour cette première version nous avons également abordé deux approches d’entraînement différentes. La première approche est un entraînement qui repose sur un apprentissage par renforcement en utilisant les principes de l’algorithme du Q-learning. Cet algorithme est une technique d'apprentissage par renforcement, où l'agent apprend à effectuer des actions dans un environnement afin de maximiser une récompense cumulée. Nous avons utilisé la formule de mise à jour des valeurs Q suivante :

Description de l'image

Cette formule nous a permis de calculer les valeurs Q appelées “réelles”. Le réseau de neurones quant à lui à prédire des valeurs Q appelées “prédites” . Nous avons calculé ensuite une fonction de perte entre ces valeurs “réelles” et “prédites”. Enfin nous avons mis à jour les poids du réseau de neurones afin de minimiser la perte calculée.

La deuxième approche consiste à entraîner le réseau neuronal en utilisant une base de données. Cependant, il n'existe pas de base de données préexistante pour le jeu des cœurs, donc nous avons dû la générer nous-mêmes. Pour ce faire, nous avons simulé des parties où les joueurs jouent de manière aléatoire dans un premier temps. Bien que cette base de données initiale permet à l'IA de progresser un peu, elle n'est pas suffisamment performante car les joueurs aléatoires ne sont pas très compétents. Par conséquent, une nouvelle base de données est génerée où cette fois-ci, l'IA entraînée joue. Ce processus est répété jusqu'à ce qu'un joueur suffisamment compétent soit obtenu.

Monte Carlo Tree Search

Notre deuxième implémentation de joueur artificiel est appelée Monte Carlo Tree Search (MCTS), une approche utilisée pour prendre des décisions dans des environnements complexes, comme les jeux.

En termes simples, MCTS est une méthode de recherche d'arbre qui simule des séquences de jeu pour évaluer quelle action prendre à un instant donné. Imaginez que notre IA joue contre elle-même des milliers de parties du jeu des Coeurs dans sa tête pour apprendre et s'améliorer continuellement.

L'algorithme MCTS se déroule en quatre étapes principales : la sélection, l'expansion, la simulation et la rétro-propagation. D'abord, il explore les différentes actions possibles à partir de l'état actuel du jeu. Ensuite, il étend l'arbre de recherche en ajoutant de nouvelles actions. Après cela, il simule plusieurs parties pour évaluer la qualité de chaque action. Enfin, il met à jour les statistiques des actions pour guider les décisions futures.

En résumé, l'IA basée sur l'algorithme MCTS est l'un des deux cerveaux derrière nos adversaires virtuels. En simulant et en évaluant des milliers de parties, elle apprend à jouer de manière stratégique et compétitive. Mais ne vous inquiétez pas, pas besoin d'être un expert en IA pour l'utiliser !

Outils

Un aperçu des différentes technologies utilisées lors de ce projet.

Placeholder
FlutterLangage : Dart Flutter est un framework open source développé par Google, conçu pour créer des applications multiplateformes à partir d'un seul code source. En utilisant Dart comme langage de programmation, Flutter permet de construire des interfaces utilisateur pour Android, iOS, le Web.
Placeholder
Python Python est un langage de programmation facile d'utilisation. De plus, il est largement utilisé dans de nombreux domaines, y compris l'intelligence artificielle, en raison de sa vaste collection de bibliothèques spécialisées dans ce domaine, ce qui en a fait le candidat idéal pour notre projet.
Placeholder
Flask Langage : Python Flask est un framework web léger et flexible pour Python, idéal pour créer des serveurs d'applications web simples et rapides. C'est celui qu'on utilise pour hébérger nos intelligences artificielles.
Placeholder
Http.Dart Langage : Dart La bibliothèque http.dart est une bibliothèque Dart qui offre des fonctionnalités pour interagir avec des serveurs HTTP. Elle permet de créer des clients HTTP pour envoyer des requêtes et de récupérer les réponses du serveur. C'est celle qu'on utilise afin d'intéragir avec les intelligences artificielles.

Equipe

Voici les membres de l'équipe en charge de la réalisation du projet "Coeurs Artificiels".

Laurence Rozé

Enseignante-chercheur et encadrante du projet

Etienne Allain

Etudiant et membre du projet

Aymen Berrajaa

Etudiant et membre du projet

Noha Doaif

Etudiant et membre du projet

Alp Jakop

Etudiant et membre du projet

Giorgi Khuchukhidze

Etudiant et membre du projet

Aymane Menfaa

Etudiant et membre du projet

Ezgi Ozel

Etudiant et membre du projet