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_id
str - Identificador para la variante del modelo a cargar ("small", "base" o "large").prefer_gpu
bool - Si se debe preferir la GPU si está disponible.quantize_on_cpu
bool - Si se debe cuantizar el modelo para la optimización de la CPU.jit_mode
bool - Si se debe habilitar el modo JIT para una ejecución potencialmente más rápida.cache_dir
str - 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:
scramble
list o str - Una secuencia de movimientos o una representación de pegatinas (stickers) del estado inicial del cubo.format
str - Formato de entrada del desorden (scramble): "moves" o "stickers".allow_wide
bool - Si se permiten movimientos anchos (wide moves) en el espacio de búsqueda.Nota
- Esto a menudo se controla automáticamente medianteergonomic_bias
.beam_width
int - El ancho del haz (beam width) para el algoritmo de búsqueda.extra_depths
int - Número de profundidades adicionales a buscar después de encontrar una solución.ergonomic_bias
dict, 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