java.lang.Object
heuristic.MonteCarlo
- All Implemented Interfaces:
Heuristic
Heuristique Monte Carlo pour la sélection d'un tir.
Description :
Cette heuristique génère un grand nombre d'échantillons (placements complets
de la flotte) compatibles avec les informations observées :
- les coordonnées connues comme "touchées" (`currentHits`) doivent être
couvertes par un navire dans l'échantillon ;
- les cases déjà tirées et identifiées comme "manquées" (déduites de
`tirsEnvoyes` moins `currentHits`) ne doivent pas contenir de navire.
Pour chaque échantillon valide, la méthode incrémente un compteur pour
chaque case occupée par un navire. Après avoir produit `samples` échantillons
acceptés (ou tenté `samples` itérations), l'algorithme choisit la case
non encore tirée qui a été la plus fréquemment occupée dans les échantillons.
En cas d'égalité, une case est sélectionnée aléatoirement parmi les meilleures.
Comportements complémentaires :
- Si la liste `naviresRestants` est vide, l'heuristique retombe sur une
stratégie uniforme (fonction `Uniform`).
- L'algorithme randomise l'ordre de placement des navires pour diversifier
les échantillons.
Usage recommandé : ajuster `samples` pour un compromis qualité/temps (valeur
par défaut : 1000).
-
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
-
MonteCarlo
public MonteCarlo() -
MonteCarlo
public MonteCarlo(int samples)
-
-
Method Details