Module ComplementIA
Package heuristic

Class MonteCarlo

java.lang.Object
heuristic.MonteCarlo
All Implemented Interfaces:
Heuristic

public class MonteCarlo extends Object implements 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 Details

    • MonteCarlo

      public MonteCarlo()
    • MonteCarlo

      public MonteCarlo(int samples)
  • Method Details

    • choisir

      public Coordonnee choisir(boolean[][] tirsEnvoyes, GrilleNavaleGraphique gng, List<Integer> naviresRestants, List<Coordonnee> currentHits)
      Description copied from interface: Heuristic
      Sélectionne la prochaine coordonnée d'attaque.
      Specified by:
      choisir in interface Heuristic
      Parameters:
      tirsEnvoyes - grille des cases déjà tirées (true si déjà tirée)
      gng - grille graphique de l'adversaire (utilisée pour la taille et des consultations éventuelles)
      naviresRestants - liste des longueurs de navires restant (peut être vide)
      currentHits - liste des coordonnées récemment touchées (cluster non encore coulé)
      Returns:
      la coordonnée choisie (doit être une case non tirée)