java.lang.Object
heuristic.Markov
- All Implemented Interfaces:
Heuristic
Heuristique "Markov" basée sur une heatmap de probabilités.
Principe : pour chaque longueur de navire restant, on parcourt toutes les
positions valides de ce navire sur la grille et on incrémente une carte de
chaleur (heatmap) pour chaque case couverte par un placement possible.
Les heatmaps pour chaque longueur sont additionnées afin d'obtenir une
estimation agrégée de la probabilité qu'une case contienne un navire.
Améliorations appliquées :
- Pondération périodique selon la plus petite longueur de navire restante
pour favoriser certaines parités de cases (optimisation heuristique).
- Si des impacts partiels (`currentHits`) sont fournis, on calcule une
heatmap contrainte qui ne compte que les placements couvrant au moins
une de ces cases touchées, puis on renforce (boost) ces valeurs pour
prioriser la résolution des bateaux en cours.
La méthode publique `choisir` renvoie la coordonnée non tirée ayant le
score maximal dans la heatmap. En cas d'égalité, une case est choisie
aléatoirement parmi les meilleures candidates.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionchoisir(boolean[][] tirsEnvoyes, GrilleNavaleGraphique gng, List<Integer> naviresRestants, List<Coordonnee> currentHits) Sélectionne la prochaine coordonnée d'attaque.
-
Constructor Details
-
Markov
public Markov()
-
-
Method Details