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
へのショートカットです。