search
Этот модуль предоставляет функцию для выполнения лучевого поиска и нахождения решений для заданного состояния.
Функция:
beam_search
: Выполняет лучевой поиск для нахождения решений в среде кубика Рубика.
MAX_BATCH_SIZE
Максимальное количество состояний, одновременно обрабатываемых нейронной сет ью (DNN) за один проход.
beam_search
def beam_search(
env,
model,
beam_width,
ergonomic_bias=None,
extra_depths=0,
max_depth=100
)
Выполняет лучевой поиск для нахождения решений для заданного разобранного состояния.
Аргументы:
env
Cube3 - Среда кубика Рубика, представляющая разобранное состояние.model
torch.nn.Module - Нейронная сеть (DNN), используемая для предсказания распределения вероятностей следующих ходов для каждого состояния.beam_width
int - Максимальное количество кандидатов, сохраняемых на каждом шаге поиска.ergonomic_bias
dict или None - Словарь, задающий эргономическое смещение для ходов, если доступно.extra_depths
int - Количество дополнительных уровней глубины для поиска после нахождения первого решения.max_depth
int - Максимальная глубина поиска, должна быть равна или больше числа Бога (20 для кубика Рубика в метрике HTM).
Возвращает:
dict
|None
: При наличии хотя бы одного решения, возвращает словарь со следующими ключами:
"solutions"
: Список оптимальных или близких к оптимальным решений, найденных в ходе поиска."num_nodes"
: Общее количество узлов, развернутых в ходе поиска."time"
: Время, затраченное на поиск (в секундах).
В противном случае, None
.
_reflect_setup
def _reflect_setup(ergonomic_bias, env)