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__(ousolve) : 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_idstr - Identifiant de la variante du modèle à charger (« small », « base » ou « large »).prefer_gpubool - Indique s'il faut préférer le GPU s'il est disponible.quantize_on_cpubool - Indique s'il faut quantifier le modèle pour l'optimisation CPU.jit_modebool - Indique s'il faut activer le mode JIT pour une exécution potentiellement plus rapide.cache_dirstr - 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 :
scramblelist ou str - Une séquence de mouvements ou une représentation par autocollants (stickers) de l'état initial du cube.formatstr - Format d'entrée du mélange : « moves » ou « stickers ».allow_widebool - Indique s'il faut autoriser les mouvements larges (wide moves) dans l'espace de recherche.Note- Ceci est souvent contrôlé automatiquement parergonomic_bias.beam_widthint - La largeur du faisceau (beam width) pour l'algorithme de recherche.extra_depthsint - Nombre de profondeurs supplémentaires à explorer après avoir trouvé une solution.ergonomic_biasdict, 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