avec rapport à rendre

This commit is contained in:
Florent Madelaine 2024-09-17 16:49:08 +02:00
parent 64b1e19564
commit 0cf876f88d

View File

@ -59,7 +59,7 @@ Troisième chose à faire.
On revisite notre algorithme pour minimax pour le jeu de Nim pour l'optimiser. On revisite notre algorithme pour minimax pour le jeu de Nim pour l'optimiser.
### améliorer Minimax ### améliorer Minimax un peu
* idée 0 : dans la boucle dans exploremax, si je trouve un coup après lequel je gagne (exploremin m'indique que je gagne) alors ce n'est pas la peine de chercher un autre coup gagnant, je peux arréter de chercher. * idée 0 : dans la boucle dans exploremax, si je trouve un coup après lequel je gagne (exploremin m'indique que je gagne) alors ce n'est pas la peine de chercher un autre coup gagnant, je peux arréter de chercher.
* idée 0bis : même chose pour une défaite dans exploremin. * idée 0bis : même chose pour une défaite dans exploremin.
@ -77,3 +77,56 @@ Si je ne peux pas, je descends dans l'arbre.
On pourrait énumérer les coups dans un ordre différent (par exemple au hasard) et étudier si ceci peut avoir un impact. On pourrait énumérer les coups dans un ordre différent (par exemple au hasard) et étudier si ceci peut avoir un impact.
Indication. changez votre code pour permettre que la boucle qui teste les coups le fasse dans un ordre aléatoire. Testez si ceci améliore l'efficacité du code. Indication. changez votre code pour permettre que la boucle qui teste les coups le fasse dans un ordre aléatoire. Testez si ceci améliore l'efficacité du code.
### compter les noeuds visités de l'arbre de jeu
Il faut absolument pour pouvoir faire votre travail correctement, compter le nombre de noeuds visités.
AJouter une variable globale, ou passez un paramètre permettant de compter le nombre de noeuds visités.
Il faut grosso modo incrémenter ce compteur quand vous faites un appel de exploreMax (de même pour exploreMin).
### affichage pour Minimax
Vous êtes nombreux à avoir du mal à réconcilier le résultat de votre algorithme avec vos calculs éventuels sur papier.
Il est judicieux de se bricoler un petit affichage d'arbre de jeu pour débuger.
Indication.
* Passez en paramètre de exploreMax et exploreMin un entier profondeur (initialement 0).
* codez une méthode prettyPrint(int profondeur, int etat, int eval) qui va afficher profondeur espaces puis le nombre d'allumettes (état) puis l'évaluation (-1 ou +1).
* insérer l'appel prettyPrint juste avant de faire un return dans exploreMax ou exploreMin
### Améliorer MiniMax beaucoup
Nous avons entrevue l'idée de alpha beta (voir transparents cours an dernier).
* Implémentez cette optimisaiton.
* Comptez le nombre de noeuds visités.
* Comparez avec la version Minimax sans cette optimisation.
### compte Rendu expérience.
N'oubliez pas d'alimenter votre journal de bord sur git.
Il faut écrire où vous en êtes, ce que vous avez fait etc.
### rapport Jeu de Nim
Je vais évaluer un premier rapport d'avancement sur le jeu de Nim (deadline vendredi 20/09/2024 à minuit).
Le document doit être en md ou pdf sur votre git et se nommer RapportNim.md ou RapportNim.pdf
Le rapport diot rappeller en première page le nom des membres du groupe.
Ce rapport doit décrire le code fait jusqu'à présent (ce qui est fait, pas fait, dans quel fichier) et ce qui fonctionne (ou partiellement ou pas).
J'appelle méthode ci-après chaque avatar de la méthode permettant de résoudre le jeu de Nim que vous avez codé.
NB. ajouter une optimisation à une méthode existante est considéré comme une nouvelle méthode.
Ce raopport doit mettre en forme de manière synthétique votre compte rendu d'expérience avec des valeurs comparant les différentes méthodes implantées.
Typiquement il me faut un tableau ou un graphique avec le nombre de noeuds visités pour chaque méthode implantée.
Vous devez a minima m'indiquer les résultats pour le nombre d'allumettes initiales suivantes : 5, 11, 17, 42 et 100.
Vous pouvez tout à fait décrire les éléments additionnels comme des temps de calcul ou autre mesur objective d'une méthode.