core
Ten moduł dostarcza podstawową klasę Solver
, która ładuje model i znajduje rozwiązania Kostki Rubika przy użyciu algorytmu przeszukiwania wiązkowego (beam search).
Klasa:
Solver
: Klasa do zarządzania konfiguracją Kostki Rubika, modelem rozwiązującym i funkcją przeszukiwania.
Solver
class Solver()
Klasa solwera do zarządzania konfiguracją środowiska, modelu i przeszukiwania.
Ta klasa zarządza środowiskiem kostki, modelem sieci neuronowej oraz algorytmem przeszukiwania wiązkowego w celu znalezienia rozwiązań.
Metody:
load
: Ładuje model solwera i optymalizuje go dla CPU lub GPU.__call__
(lubsolve
): Ustawia stan kostki i znajduje rozwiązania przy użyciu przeszukiwania wiązkowego.benchmark
: Ocenia wydajność przeszukiwania solwera.evaluate_temporal_performance
: (Przestarzałe) Ocenia zależność długości rozwiązania od czasu.
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")
)
Ładuje model solwera Kostki Rubika i optymalizuje go dla CPU lub GPU.
Argumenty:
model_id
str - Identyfikator wariantu modelu do załadowania („small”, „base” lub „large”).prefer_gpu
bool - Czy preferować GPU, jeśli jest dostępne.quantize_on_cpu
bool - Czy kwantyzować model w celu optymalizacji dla CPU.jit_mode
bool - Czy włączyć tryb JIT dla potencjalnie szybszego wykonania.cache_dir
str - Katalog do przechowywania plików cache modelu.
Zwraca:
None
__call__
def __call__(
scramble,
format="moves",
allow_wide=True,
beam_width: int = 1024,
extra_depths: int = 0,
ergonomic_bias: dict | None = None
)
Ustawia stan kostki i znajduje rozwiązania przy użyciu przeszukiwania wiązkowego.
Argumenty:
scramble
list lub str - Sekwencja ruchów lub reprezentacja naklejek początkowego stanu kostki.format
str - Format wejściowy mieszania: „moves” lub „stickers”.allow_wide
bool - Czy zezwalać na szerokie ruchy w przestrzeni przeszukiwania.Uwaga
- Jest to często kontrolowane automatycznie przezergonomic_bias
.beam_width
int - Szerokość wiązki dla algorytmu przeszukiwania.extra_depths
int - Liczba dodatkowych głębokości do przeszukania po znalezieniu rozwiązania.ergonomic_bias
dict, opcjonalnie - Słownik do faworyzowania w przeszukiwaniu określonych ruchów na podstawie preferencji ergonomicznych.
Zwraca:
dict
|None
: Słownik zawierający rozwiązanie(a) i metadane przeszukiwania, lub None, jeśli nie znaleziono rozwiązania.
benchmark
Metoda skrótowa alphacube.solver.benchmark(...)
funkcjonalnie równoważna alphacube._evaluator.benchmark(alphacube.solver, ...)
. evaluate_search_efficiency
przekierowuje do tej metody w celu zapewnienia wstecznej kompatybilności.
evaluate_temporal_performance
Przestarzałe. Skrót do alphacube._evaluator.evaluate_temporal_performance