Как сделать функцию, которая будет проверять, совершенен ли мой искусственный интеллект в крестики-нолики?

Учитывая каждое состояние доски, мой А.И. вернет 1 точное место для перемещения.

Я также сделал функцию, которая повторяет все возможные действия, сделанные с помощью ИИ.

Итак, это рекурсивная функция, которая позволяет ИИ сделать ход для данной доски, затем позволяет другой игре сделать все возможные ходы и вызывает рекурсивную функцию в себе с новой доской для каждого возможного хода.

Я делаю это, когда ИИ ходит первым, а когда другой ходит первым... и складываю их вместе. Я получаю 418 возможных побед и 115 возможных ничьих и 0 возможных поражений.

Но теперь моя проблема в том, как мне максимизировать количество выигрышей? Мне нужно с чем-то сравнить эту статистику, но я не могу понять, с чем ее сравнивать.


person Dan Webster    schedule 06.12.2012    source источник
comment
Единственный выигрышный ход — не играть.   -  person Jeremy Holovacs    schedule 06.12.2012
comment
Что вам нужно, так это бэктрекер.   -  person Servy    schedule 06.12.2012
comment
Каковы размеры вашей доски? 3х3?   -  person nakiya    schedule 06.12.2012


Ответы (1)


Вы можете рассматривать это как задачу оптимизации с неизвестным оптимальным решением. Затем вы можете использовать некоторую форму мета-эвристического алгоритма (например, генетический алгоритм, PSO), чтобы применять вариации к вашему ИИ, пока не будет найден оптимальный вариант. Интересно то, что эти алгоритмы могут не обязательно возвращать «лучшее», но все же полезно получить что-то лучшее, чем то, что у вас было раньше.

Обычно для метаэвристических алгоритмов требуется фитнес-функция, которая в основном сравнивает решения, чтобы найти наилучшее. В вашем случае вы можете использовать соотношение выигрышей и ничьих в качестве фитнес-функции. Достигнув соотношения 418/115, вы можете использовать его в качестве «базового уровня» для сравнения будущих решений.

К сожалению, я понимаю, что то, что я предлагаю, может быть слишком надуманным (вы можете искать что-то гораздо более простое) или слишком общим.

К сожалению, я не уверен в какой-либо статистике, которую вы можете использовать, чтобы убедиться, что она идеальна. Одна идея, которая у меня только что возникла, состоит в том, чтобы сделать предположение, что: - Идеальная игра ведет только к победе или ничьей.

Ваш рекурсивный алгоритм уже возвращает это. Теперь вопрос, можно ли увеличить количество выигрышей? Тогда можно сделать предположение, что: - Если оба игрока играют идеально, результатом всегда будет ничья (кошачья игра).

Основываясь на этом предположении и вместе с оценкой предыдущего предположения, это означает, что если ваш ИИ (назовем его Бобом) совершенен, в игре Боб против Боба результатом всегда должна быть ничья.

Я понимаю, что это по-прежнему не поможет вам увеличить количество побед (если это возможно), но предоставит еще одну метрику, которую вы можете использовать, чтобы, по крайней мере, гарантировать, что в игре Боба против Боба нет пограничного случая, когда является победителем (что означало бы, что ваш ИИ не идеален).

person Alexandros Gouvatsos    schedule 28.01.2013