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__
(ousolve
): 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 porergonomic_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