Zum Hauptinhalt springen

core

Dieses Modul stellt die Kernklasse Solver bereit, die ein Modell lädt und mit einem Beam-Search-Algorithmus Lösungen für den Zauberwürfel findet.

Klasse:

  • Solver: Eine Klasse zur Verwaltung der Zauberwürfel-Konfiguration, des Lösungsmodells und der Suchfunktion.

Solver

class Solver()

Eine Solver-Klasse zur Verwaltung von Umgebungs-, Modell- und Suchkonfigurationen.

Diese Klasse orchestriert die Würfelumgebung, das neuronale Netzwerkmodell und den Beam-Search-Algorithmus, um Lösungen zu finden.

Methoden:

  • load: Lädt das Solver-Modell und optimiert es für CPU oder GPU.
  • __call__ (oder solve): Richtet den Zustand des Würfels ein und findet Lösungen mittels Beam-Search.
  • benchmark: Evaluiert die Sucheffizienz des Solvers.
  • evaluate_temporal_performance: (Veraltet) Evaluiert die Lösungslänge im Verhältnis zur Zeit.

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

Lädt das Zauberwürfel-Solver-Modell und optimiert es für CPU oder GPU.

Argumente:

  • model_id str - Kennung für die zu ladende Modellvariante ("small", "base" oder "large").
  • prefer_gpu bool - Ob eine GPU bevorzugt werden soll, falls verfügbar.
  • quantize_on_cpu bool - Ob das Modell für die CPU-Optimierung quantisiert werden soll.
  • jit_mode bool - Ob der JIT-Modus für potenziell schnellere Ausführung aktiviert werden soll.
  • cache_dir str - Verzeichnis zum Zwischenspeichern der Modelldateien.

Rückgabewert:

  • None

__call__

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

Richtet den Zustand des Würfels ein und findet Lösungen mittels Beam-Search.

Argumente:

  • scramble list oder str - Eine Sequenz von Zügen oder eine Sticker-Darstellung des anfänglichen Würfelzustands.
  • format str - Eingabeformat des Scrambles: "moves" oder "stickers".
  • allow_wide bool - Ob weite Züge (wide moves) im Suchraum erlaubt sind.
  • Hinweis - Dies wird oft automatisch durch ergonomic_bias gesteuert.
  • beam_width int - Die Strahlbreite (beam width) für den Suchalgorithmus.
  • extra_depths int - Anzahl zusätzlicher Tiefen, die nach dem Finden einer Lösung durchsucht werden sollen.
  • ergonomic_bias dict, optional - Ein Dictionary, um die Suche basierend auf ergonomischen Präferenzen zugunsten bestimmter Züge zu beeinflussen.

Rückgabewert:

  • dict | None: Ein Dictionary, das die Lösung(en) und Such-Metadaten enthält, oder None, wenn keine Lösung gefunden wird.

benchmark

Eine Shortcut-Methode alphacube.solver.benchmark(...), die funktional äquivalent zu alphacube._evaluator.benchmark(alphacube.solver, ...) ist. evaluate_search_efficiency leitet aus Gründen der Abwärtskompatibilität auf diese Methode um.

evaluate_temporal_performance

Veraltet. Ein Shortcut für alphacube._evaluator.evaluate_temporal_performance