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
的快捷方式。