2017-02-21 12 views
0

Я успешно реализовал движок игры negascout, который работает хорошо, но детерминированно. Это означает, что я могу повторять ту же игру снова и снова, потому что для данной позиции игровой движок дает одинаковый лучший ход каждый раз. Это нежелательно в моем случае, потому что я хочу конкурировать с моим алгоритмом в турнирах по кодированию и с детерминированным поведением, противник может легко написать программу, которая выигрывает, просто переигрывая последовательность выигрышных движений против моей программы.Как сделать игровой движок, основанный на альфа-бетах, недетерминированным?

Мой вопрос: какой самый эффективный и элегантный способ сделать его менее детерминированным? Я мог бы добавить случайное смещение в мою оценку позиции, но я боюсь, что это может ухудшить качество оценки. Есть ли стандартный способ сделать это?

ответ

1

Просто начните с другой случайной открытой позиции. Не добавляйте случайность к вашему движку, пока не выработаете ошибки. Если два или более ходов равны, вы можете рандомизировать их в порядке перемещения.

+0

Спасибо за предложение, но в большинстве игр я не могу изменить позицию открытия. Моя проблема заключается в том, что в некоторых конкурсах вы отправляете скомпилированный код. Я меньше боюсь, что кто-то разобьет мой код, но они могут настроить свой движок, чтобы воспроизвести последовательность ходов, где мой алгоритм не работает. До сих пор я не нашел лучшего способа, чем рандомизация, чтобы избежать этого. Я также попытался случайным образом выбрать одинаково хорошие ходы, но это усложнило двигатель и в большинстве случаев не оказало большого эффекта, потому что во многих отраслях вы все равно имеете альфа-бета-отсечку, основанную на оценке движения. –