core
このモジュールは、モデルを読み込み、ビームサーチアルゴリズムを用いてルービックキューブの解法を見つけ出す、中心的なクラスSolverを提供します。
クラス:
Solver: ルービックキューブの状態、ソルバーモデル、探索関数を管理するためのクラスです。
Solver
class Solver()
環境、モデル、探索の設定を管理するためのソルバークラスです。
このクラスは、キューブ環境、ニューラルネットワークモデル、ビームサーチアルゴリズムを連携させて解法を見つけ出します。
メソッド:
load: ソルバーモデルを読み込み、CPUまたはGPU向けに最適化します。__call__(またはsolve): キューブの状態を設定し、ビームサーチを用いて解法を見つけます。benchmark: ソルバーの探索効率を評価します。evaluate_temporal_performance: (非推奨) 解法の手数と時間の関係を評価します。
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")
)
ルービックキューブのソルバーモデルを読み込み、CPUまたはGPU向けに最適化します。
引数:
model_idstr - 読み込むモデルのバリアント("small"、"base"、または "large")を識別するIDです。prefer_gpubool - GPUが利用可能な場合にGPUを優先するかどうか。quantize_on_cpubool - CPU最適化のためにモデルを量子化するかどうか。jit_modebool - より高速な実行の可能性があるJITモードを有効にするかどうか。cache_dirstr - モデルファイルをキャッシュするディレクトリです。
戻り値:
None
__call__
def __call__(
scramble,
format="moves",
allow_wide=True,
beam_width: int = 1024,
extra_depths: int = 0,
ergonomic_bias: dict | None = None
)
キューブの状態を設定し、ビームサーチを用いて解法を見つけます。
引数:
scramblelist or str - 初期キューブ状態を表す手順のシーケンスまたはステッカー表現です。formatstr - スクランブルの入力形式です:"moves" または "stickers"。allow_widebool - 探索空間でワイドムーブ(2層回し)を許可するかどうか。Note- これは通常ergonomic_biasによって自動的に制御されます。beam_widthint - 探索アルゴリズムのビーム幅です。extra_depthsint - 解を見つけた後に追加で探索する深さの数です。ergonomic_biasdict, optional - 人間工学的な好みに基づいて、特定の操作にバイアスをかけるための辞書です。
戻り値:
dict|None: 解法と探索メタデータを含む辞書、または解が見つからない場合はNone。
benchmark
alphacube.solver.benchmark(...) は alphacube._evaluator.benchmark(alphacube.solver, ...) と機能的に同等なショートカットメソッドです。evaluate_search_efficiency は後方互換性のためにこのメソッドにリダイレクトされます。
evaluate_temporal_performance
非推奨。alphacube._evaluator.evaluate_temporal_performance へのショートカットです。