Перейти к основному содержимому

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").
  • 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 - Разрешать ли широкие ходы в пространстве поиска.
  • Примечание - Этот параметр часто контролируется автоматически через 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