Added a README and started moving the UI code

This commit is contained in:
Nabil Ould Hamou 2024-10-16 18:55:14 +02:00
parent 805f2f11fe
commit 64c5050f84
4 changed files with 52 additions and 6 deletions

41
README.md Normal file
View file

@ -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.

View file

@ -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'

View file

@ -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++) {

View file

@ -0,0 +1,7 @@
package display;
public class UI {
private int replayBtn;
}