Przejdź do głównej zawartości

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__ (lub solve): 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 przez ergonomic_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