Pular para o conteúdo principal

core

Este módulo fornece a classe principal Solver, que carrega um modelo e encontra soluções para o Cubo de Rubik usando um algoritmo de busca em feixe (beam search).

Classe:

  • Solver: Uma classe para gerenciar a configuração do Cubo de Rubik, o modelo de resolução e a função de busca.

Solver

class Solver()

Uma classe de solucionador para gerenciar as configurações de ambiente, modelo e busca.

Esta classe orquestra o ambiente do cubo, o modelo de rede neural e o algoritmo de busca em feixe para encontrar soluções.

Métodos:

  • load: Carrega o modelo do solucionador e o otimiza para CPU ou GPU.
  • __call__ (ou solve): Configura o estado do cubo e encontra soluções usando a busca em feixe.
  • benchmark: Avalia a eficiência de busca do solucionador.
  • evaluate_temporal_performance: (Obsoleto) Avalia o comprimento da solução vs. tempo.

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")
)

Carrega o modelo do solucionador de Cubo de Rubik e o otimiza para CPU ou GPU.

Argumentos:

  • model_id str - Identificador para a variante do modelo a ser carregada ("small", "base" ou "large").
  • prefer_gpu bool - Se deve preferir GPU, se disponível.
  • quantize_on_cpu bool - Se deve quantizar o modelo para otimização em CPU.
  • jit_mode bool - Se deve habilitar o modo JIT para uma execução potencialmente mais rápida.
  • cache_dir str - Diretório para armazenar em cache os arquivos do modelo.

Retorna:

  • None

__call__

def __call__(
scramble,
format="moves",
allow_wide=True,
beam_width: int = 1024,
extra_depths: int = 0,
ergonomic_bias: dict | None = None
)

Configura o estado do cubo e encontra soluções usando a busca em feixe.

Argumentos:

  • scramble list ou str - Uma sequência de movimentos ou uma representação de adesivos do estado inicial do cubo.
  • format str - Formato de entrada do embaralhamento: "moves" ou "stickers".
  • allow_wide bool - Se deve permitir movimentos largos (wide moves) no espaço de busca.
  • Nota - Isso é frequentemente controlado automaticamente por ergonomic_bias.
  • beam_width int - A largura do feixe (beam width) para o algoritmo de busca.
  • extra_depths int - Número de profundidades extras a serem pesquisadas após encontrar uma solução.
  • ergonomic_bias dict, opcional - Um dicionário para enviesar a busca em direção a certos movimentos com base na preferência ergonômica.

Retorna:

  • dict | None: Um dicionário contendo a(s) solução(ões) e metadados da busca, ou None se nenhuma solução for encontrada.

benchmark

Um método de atalho alphacube.solver.benchmark(...) funcionalmente equivalente a alphacube._evaluator.benchmark(alphacube.solver, ...). evaluate_search_efficiency redireciona para este método para compatibilidade com versões anteriores.

evaluate_temporal_performance

Obsoleto. Um atalho para alphacube._evaluator.evaluate_temporal_performance