Разработка алгоритмов AI: карточная игра

В настоящее время я работаю над реализацией испанской карточной игры под названием Briscas или Briscola, http://en.wikipedia.org/wiki/Briscola

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

Details:

Deck Size: 40
Players: 4 (2 teams of 2)
Cards have specific value. (from 0 to 11)

Вопрос

I know that straight MiniMax would be to expensive. What algorithms are typically used for these kind of card games? Also any literature that you can point to will also be beneficial.

Спасибо


person meteorfox    schedule 16.05.2011    source источник
comment
Я не думаю, что minmax подходит, потому что вам не хватает информации о колодах карт другого игрока. ИМХО подход Монте-Карло лучше подходит для таких игр   -  person Gunther Piez    schedule 16.05.2011
comment
В этом вопросе есть несколько указателей: stackoverflow.com / questions / 525016 /   -  person Anders Lindahl    schedule 16.05.2011
comment
@drhirsch Я с тобой согласен. Я думал о Монте-Карло и, возможно, о некоторых эвристиках.   -  person meteorfox    schedule 16.05.2011
comment
Вы пытаетесь создать оптимального игрока или пытаетесь создать игру, в которую люди могли бы играть?   -  person Anders Lindahl    schedule 16.05.2011
comment
Думаю, я стремлюсь к чему-то среднему.   -  person meteorfox    schedule 16.05.2011
comment
Решали ли вы более простые задачи, например, 1 на 1 в последней руке колоды?   -  person Beta    schedule 16.05.2011


Ответы (1)


Это зависит от того, насколько амбициозными вы хотите стать, но для начала вам понадобится быстрый движок для имитации игры.

Тогда вам понадобится быстрый и, возможно, простой модельный плеер.

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

Затем вы создаете модель игрока, который действует на состояние. Либо

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

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

C) используйте еще больше ИИ и позвольте системе генетического программирования (есть несколько зрелых. Найдите ту, которая может проводить турниры. Вы даже можете реализовать ее самостоятельно, но давайте не будем увлекаться :) напишите за вас всего игрока, используя ваше состояние в качестве входных данных.

Следующий шаг:

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

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

Теперь у вас должен быть отличный карточный игрок!

person Gurgeh    schedule 16.05.2011
comment
Кроме того, Википедия станет хорошим началом для получения дополнительных сведений о моделировании Монте-Карло, генетических алгоритмах и генетическом программировании. - person Gurgeh; 17.05.2011