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_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 parergonomic_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