core
Este módulo proporciona la clase principal Solver, que carga un modelo y encuentra soluciones para el cubo de Rubik utilizando un algoritmo de búsqueda por haz (beam search).
Clase:
Solver: Una clase para gestionar la configuración del cubo de Rubik, el modelo de resolución y la función de búsqueda.
Solver
class Solver()
Una clase de solucionador para gestionar las configuraciones del entorno, el modelo y la búsqueda.
Esta clase orquesta el entorno del cubo, el modelo de red neuronal y el algoritmo de búsqueda por haz para encontrar soluciones.
Métodos:
load: Carga el modelo del solucionador y lo optimiza para CPU o GPU.__call__(osolve): Configura el estado del cubo y encuentra soluciones utilizando la búsqueda por haz.benchmark: Evalúa la eficiencia de búsqueda del solucionador.evaluate_temporal_performance: (Obsoleto) Evalúa la longitud de la solución frente al tiempo.
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")
)
Carga el modelo del solucionador del cubo de Rubik y lo optimiza para CPU o GPU.
Argumentos:
model_idstr - Identificador para la variante del modelo a cargar ("small", "base" o "large").prefer_gpubool - Si se debe preferir la GPU si está disponible.quantize_on_cpubool - Si se debe cuantizar el modelo para la optimización de la CPU.jit_modebool - Si se debe habilitar el modo JIT para una ejecución potencialmente más rápida.cache_dirstr - Directorio para almacenar en caché los archivos del modelo.
Devuelve:
None
__call__
def __call__(
scramble,
format="moves",
allow_wide=True,
beam_width: int = 1024,
extra_depths: int = 0,
ergonomic_bias: dict | None = None
)
Configura el estado del cubo y encuentra soluciones utilizando la búsqueda por haz.
Argumentos:
scramblelist o str - Una secuencia de movimientos o una representación de pegatinas (stickers) del estado inicial del cubo.formatstr - Formato de entrada del desorden (scramble): "moves" o "stickers".allow_widebool - Si se permiten movimientos anchos (wide moves) en el espacio de búsqueda.Nota- Esto a menudo se controla automáticamente medianteergonomic_bias.beam_widthint - El ancho del haz (beam width) para el algoritmo de búsqueda.extra_depthsint - Número de profundidades adicionales a buscar después de encontrar una solución.ergonomic_biasdict, opcional - Un diccionario para sesgar la búsqueda hacia ciertos movimientos basándose en la preferencia ergonómica.
Devuelve:
dict|None: Un diccionario que contiene la(s) solución(es) y metadatos de la búsqueda, o None si no se encuentra ninguna solución.
benchmark
Un método de atajo alphacube.solver.benchmark(...) funcionalmente equivalente a alphacube._evaluator.benchmark(alphacube.solver, ...). evaluate_search_efficiency redirige a este método por compatibilidad con versiones anteriores.
evaluate_temporal_performance
Obsoleto. Un atajo a alphacube._evaluator.evaluate_temporal_performance