From 64c5050f84ab89d56e400b31e2201a6f53d41f26 Mon Sep 17 00:00:00 2001 From: Nabil Ould Hamou Date: Wed, 16 Oct 2024 18:55:14 +0200 Subject: [PATCH] Added a README and started moving the UI code --- README.md | 41 +++++++++++++++++++++++++++++++++++ build.gradle | 2 +- src/main/java/Main.java | 8 +++---- src/main/java/display/UI.java | 7 ++++++ 4 files changed, 52 insertions(+), 6 deletions(-) create mode 100644 README.md create mode 100644 src/main/java/display/UI.java diff --git a/README.md b/README.md new file mode 100644 index 0000000..8acca33 --- /dev/null +++ b/README.md @@ -0,0 +1,41 @@ +# Projet d'Algorithme Génétique - Intelligence Artificielle + +## Description + +Ce projet implémente un **algorithme génétique (GA)** en Java dans le cadre de mon cours d'introduction à l'IA. + +Dans ce projet, l'algorithme vise à trouver la meilleure solution pour trouver la sortie d'un labyrinthe, le tout en utilisant le moins de mouvements possible. + +### Fonctionnalités +Ce projet implémente une inteface graphique afin de pouvoir visualiser les mouvements du meilleur individu de chaque génération. + +## Librairies +- [Jaylib (Binding de Raylib en java)](https://github.com/electronstudio/jaylib) - Pour le GUI +- [Gradle Shadow](https://github.com/GradleUp/shadow) - Pour la compilation du projet + +## Utilisation + +Une version est téléchargeable depuis la page **Release** du dépôt GitHub. + +Le programme permets de visualiser de façon dynamique comment le meilleur individu de chaque génération se comporte. +De plus, il est possible de modifier certains critères afin de voir leurs effets sur la population. + +### Les critères modifiable +- **Nombre d'itération**: Le nombre d'itération afin que l'algorithme ne s'arrête. +- **Taille de la population** : Le nombre d'individus dans chaque génération. +- **Taux de mutation** : La probabilité qu'une mutation se produise. +- **Taux de croisement** : ???. +- **Taux de selectivité** : Le nombre d'individus qui seront gardés pour créer la génération suivante. + +## Exemples d'application + +Ce projet est adapté pour comprendre, et visualiser comment un algorithme génétique explore, et trouve une solution à un problème donné. +Bien que ce projet reste très simple, il peut être utile pour apprendre. + +## Auteur + +- [Nabil Ould Hamou](https://nbiloh.me/) - Étudiant en Master ISA + +## Licence + +Ce projet est sous licence MIT. Voir le fichier [LICENSE](LICENSE) pour plus de détails. \ No newline at end of file diff --git a/build.gradle b/build.gradle index d62f097..1a2bb64 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform plugins { id 'java' id 'application' - id 'com.github.johnrengelman.shadow' version '7.0.0' + id 'com.gradleup.shadow' version '8.3.0' } group = 'fr.nabil' diff --git a/src/main/java/Main.java b/src/main/java/Main.java index ef3f49a..de81724 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -29,17 +29,15 @@ public class Main { // Draw UI DrawText("Generation: 1", 10, 510, 24, BLACK); - Jaylib.Rectangle r1 = new Jaylib.Rectangle(200, 510, 150, 25); + Jaylib.Rectangle r1 = new Jaylib.Rectangle(10, 535, 150, 25); int btn = GuiButton(r1, "Next generation"); GuiSetStyle(btn, TEXT_SIZE, 16); - Jaylib.Rectangle r2 = new Jaylib.Rectangle(200, 550, 150, 25); + Jaylib.Rectangle r2 = new Jaylib.Rectangle(10, 565, 150, 25); int btn2 = GuiButton(r2, "Replay"); GuiSetStyle(btn2, TEXT_SIZE, 16); - if (btn == 1) { - System.out.println("next gen?"); - } + // Draw Maze for (int i = 0; i < Maze.MAZE[0].length; i++) { diff --git a/src/main/java/display/UI.java b/src/main/java/display/UI.java new file mode 100644 index 0000000..3990fac --- /dev/null +++ b/src/main/java/display/UI.java @@ -0,0 +1,7 @@ +package display; + +public class UI { + + private int replayBtn; + +}