Aller au contenu principal

core

Ce module fournit la classe principale Solver, qui charge un modèle et trouve des solutions pour le Rubik's Cube en utilisant un algorithme de recherche en faisceau.

Classe :

  • Solver : Une classe pour gérer la configuration du Rubik's Cube, le modèle de résolution et la fonction de recherche.

Solver

class Solver()

Une classe de solveur pour gérer les configurations de l'environnement, du modèle et de la recherche.

Cette classe orchestre l'environnement du cube, le modèle de réseau de neurones et l'algorithme de recherche en faisceau pour trouver des solutions.

Méthodes :

  • load : Charge le modèle du solveur et l'optimise pour le CPU ou le GPU.
  • __call__ (ou solve) : Configure l'état du cube et trouve des solutions en utilisant la recherche en faisceau.
  • benchmark : Évalue l'efficacité de recherche du solveur.
  • evaluate_temporal_performance : (Obsolète) Évalue la longueur de la solution par rapport au temps.

load

def load(
model_id: str = dict(cpu="small").get(device.type, "large"),
prefer_gpu: bool = True,
quantize_on_cpu: bool = True,
jit_mode: bool = False,
cache_dir: str = os.path.expanduser("~/.cache/alphacube")
)

Charge le modèle du solveur de Rubik's Cube et l'optimise pour le CPU ou le GPU.

Arguments :

  • model_id str - Identifiant de la variante du modèle à charger (« small », « base » ou « large »).
  • prefer_gpu bool - Indique s'il faut préférer le GPU s'il est disponible.
  • quantize_on_cpu bool - Indique s'il faut quantifier le modèle pour l'optimisation CPU.
  • jit_mode bool - Indique s'il faut activer le mode JIT pour une exécution potentiellement plus rapide.
  • cache_dir str - Répertoire pour mettre en cache les fichiers du modèle.

Retourne :

  • None

__call__

def __call__(
scramble,
format="moves",
allow_wide=True,
beam_width: int = 1024,
extra_depths: int = 0,
ergonomic_bias: dict | None = None
)

Configure l'état du cube et trouve des solutions en utilisant la recherche en faisceau.

Arguments :

  • scramble list ou str - Une séquence de mouvements ou une représentation par autocollants (stickers) de l'état initial du cube.
  • format str - Format d'entrée du mélange : « moves » ou « stickers ».
  • allow_wide bool - Indique s'il faut autoriser les mouvements larges (wide moves) dans l'espace de recherche.
  • Note - Ceci est souvent contrôlé automatiquement par ergonomic_bias.
  • beam_width int - La largeur du faisceau (beam width) pour l'algorithme de recherche.
  • extra_depths int - Nombre de profondeurs supplémentaires à explorer après avoir trouvé une solution.
  • ergonomic_bias dict, optionnel - Un dictionnaire pour biaiser la recherche en faveur de certains mouvements en fonction de la préférence ergonomique.

Retourne :

  • dict | None : Un dictionnaire contenant la ou les solution(s) et les métadonnées de recherche, ou None si aucune solution n'est trouvée.

benchmark

Une méthode de raccourci alphacube.solver.benchmark(...) fonctionnellement équivalente à alphacube._evaluator.benchmark(alphacube.solver, ...). evaluate_search_efficiency redirige vers cette méthode pour la rétrocompatibilité.

evaluate_temporal_performance

Obsolète. Un raccourci vers alphacube._evaluator.evaluate_temporal_performance