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__
(odersolve
): 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 durchergonomic_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, oderNone
, 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