メインコンテンツまでスキップ

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_id str - 読み込むモデルのバリアント("small"、"base"、または "large")を識別するIDです。
  • prefer_gpu bool - GPUが利用可能な場合にGPUを優先するかどうか。
  • quantize_on_cpu bool - CPU最適化のためにモデルを量子化するかどうか。
  • jit_mode bool - より高速な実行の可能性があるJITモードを有効にするかどうか。
  • cache_dir str - モデルファイルをキャッシュするディレクトリです。

戻り値:

  • None

__call__

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

キューブの状態を設定し、ビームサーチを用いて解法を見つけます。

引数:

  • scramble list or str - 初期キューブ状態を表す手順のシーケンスまたはステッカー表現です。
  • format str - スクランブルの入力形式です:"moves" または "stickers"。
  • allow_wide bool - 探索空間でワイドムーブ(2層回し)を許可するかどうか。
  • Note - これは通常 ergonomic_bias によって自動的に制御されます。
  • beam_width int - 探索アルゴリズムのビーム幅です。
  • extra_depths int - 解を見つけた後に追加で探索する深さの数です。
  • ergonomic_bias dict, optional - 人間工学的な好みに基づいて、特定の操作にバイアスをかけるための辞書です。

戻り値:

  • dict | None: 解法と探索メタデータを含む辞書、または解が見つからない場合は None

benchmark

alphacube.solver.benchmark(...)alphacube._evaluator.benchmark(alphacube.solver, ...) と機能的に同等なショートカットメソッドです。evaluate_search_efficiency は後方互換性のためにこのメソッドにリダイレクトされます。

evaluate_temporal_performance

非推奨。alphacube._evaluator.evaluate_temporal_performance へのショートカットです。