Saltar al contenido principal

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__ (o solve): 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 mediante ergonomic_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