Ce projet vise à modéliser et résoudre le problème de répartition des ressources dans une colonie spatiale. Les colons ont des préférences pour certaines ressources et des relations de type "ne s'aiment pas". L'objectif est de minimiser le nombre de colons jaloux lors de l'affectation des ressources.
Ce document fournit des instructions d'utilisation, des détails sur l'algorithme implémenté, et des informations sur les fonctionnalités.
-
Mode manuel (Partie 1) :
- Lancez le programme sans fournir de fichier en argument.
- Exemple :
java -jar DorcalBah.jar
- Vous serez guidé pour créer une colonie, ajouter des relations entre colons, et définir leurs préférences.
-
Mode fichier (Partie 2) :
- Fournissez un fichier texte décrivant la colonie.
- Exemple :
java -jar DorcalBah.jar chemin/vers/le_fichier.txt
- Format du fichier attendu :
colon(A). colon(B). colon(C). ressource(o1). ressource(o2). ressource(o3). deteste(A,B). deteste(B,C). preferences(A,o1,o2,o3). preferences(B,o2,o3,o1). preferences(C,o3,o1,o2).
-
Menu interactif (Partie 2) :
- Une fois le fichier chargé, vous accéderez à un menu :
- Résolution automatique : Utilise un algorithme pour minimiser les jalousies.
- Sauvegarde : Enregistre la solution dans un fichier au format
colon:ressource
. - Fin : Quitte le programme.
- Une fois le fichier chargé, vous accéderez à un menu :
- Lecture des fichiers définissant les colons, ressources, relations et préférences.
- Validation de la syntaxe et cohérence des données (ex. : nombre de ressources égal au nombre de colons).
- Création dynamique de colons et gestion des relations et préférences.
- Minimisation des jalousies grâce à l'algorithme de recuit simulé.
- Export des affectations sous forme de fichier texte lisible.
- Interface texte simple permettant de naviguer entre les différentes fonctionnalités.
- Les tests ont été écrits en utilisant JUnit 5.
- La structure du projet suit les bonnes pratiques, avec une séparation claire entre le code source et les tests (
src/test/java
).
- Tests : Vérifier la création des colons et colonies, ainsi que leurs attributs par défaut.
- Résultat attendu : Les colons et colonies sont correctement initialisés avec des valeurs cohérentes.
- Tests :
- Gestion correcte des relations "ne s'aiment pas".
- Validation des préférences assignées aux colons.
- Résultat attendu : Les relations et préférences sont enregistrées sans erreur.
- Tests :
- Vérifier le coût total (jalousies) après exécution de l'algorithme.
- S'assurer que toutes les ressources sont bien attribuées à un colon.
- Résultat attendu : La solution générée respecte les préférences.
- Tests : Valider les coûts calculés pour des solutions spécifiques.
- Résultat attendu : Le coût correspond au nombre de colons jaloux dans la solution testée.
L’arborescence standard est :
DorcalBah/
└── src/
├── colony/
│ ├── Colon.java
│ └── Colonie.java
├── io/
│ ├── ColonyFileParser.java
│ └── ColonyFileWriter.java
├── solver/
│ ├── Solver.java
│ └── NaiveSolver.java
├── test/
│ ├── ColonieTest.java
│ ├── ColonyFileParserTest.java
│ └── NaiveSolverTest.java
└── ui/
├── Main.java (contient la méthode main)
├── Affectation.java
└── BuildColony.java
colony
: contient le modèle de la colonie (classeColonie
), chaqueColon
(nom, préférences, relations).io
: gère l’import (ColonyFileParser
) et l’export (ColonyFileWriter
) de la colonie et/ou solutions.solver
: contient laclasse abstraiteSolver
et l’implémentation naïve (NaiveSolver
).ui
: l’interface console :Main.java
: point d’entrée (main
).Affectation.java
: gère la partie 1 (mode manuel).BuildColony.java
: logique de construction, menus, etc.
test
: contient les tests unitaires
- Étudiant 1 : Doralie Dorcal
- Étudiant 2 : Oumou Hawa BAH