core
Ce module fournit la classe principale Solver
, qui charge un modèle et trouve des solutions au Rubik's Cube en utilisant un algorithme de recherche par 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.
Méthodes :
load
: Charge le modèle de résolution du Rubik's Cube et l'optimise pour le CPU ou le GPU.__call__
: Configure l'état du cube et le passe pour résolution en utilisant la recherche par faisceau.
load
def load(model_id: str = "small" if device.type == "cpu" else "large", prefer_gpu: bool = True, quantize_on_cpu: bool = True, jit_mode: bool = False, *args, **kwargs)
Charge le modèle de résolution du 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.*args
- Arguments supplémentaires pour le chargement du modèle.**kwargs
- Arguments supplémentaires par mot-clé pour le chargement et l'optimisation du modèle.
Retourne :
None
__call__
def __call__(scramble, format="moves", allow_wide=True, **kwargs)
Configure l'état du cube à partir de format
et scramble
et le passe à search.beam_search
avec **kwargs
.
Arguments :
format
str - Format d'entrée du mélange : soit "moves" soit "stickers".scramble
list - Une séquence de mouvements/autocollants représentant l'état initial du Rubik's Cube.allow_wide
bool - Indique si les mouvements larges sont autorisés.**kwargs
- Arguments par mot-clé à passer àbeam_search
.
Retourne :
solutions
dict | None - Dictionnaire contenant la réponse de la solution desearch.beam_search
.