跳到主要内容

core

该模块提供了核心类 Solver,它加载一个模型并使用集束搜索(beam search)算法来寻找魔方解法。

类:

  • 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")。
  • prefer_gpu bool - 如果有可用的 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 或 str - 代表魔方初始状态的转动序列或色块表示。
  • format str - 打乱公式的输入格式:"moves" 或 "stickers"。
  • allow_wide bool - 是否在搜索空间中允许宽转(wide moves)。
  • 注意 - 该选项通常由 ergonomic_bias 自动控制。
  • beam_width int - 搜索算法的集束宽度。
  • extra_depths int - 找到解法后额外搜索的深度。
  • ergonomic_bias dict, 可选 - 一个字典,用于根据操作习惯偏好来偏置搜索,使其倾向于某些特定转动。

返回值

  • dict | None: 一个包含解法和搜索元数据的字典,如果未找到解法,则为 None。

benchmark

alphacube.solver.benchmark(...) 是一个快捷方法,功能上等同于 alphacube._evaluator.benchmark(alphacube.solver, ...)。为了向后兼容,evaluate_search_efficiency 会重定向到此方法。

evaluate_temporal_performance

已弃用。alphacube._evaluator.evaluate_temporal_performance 的快捷方式。