Генетический алгоритм для карточной игры (Доминион)

У меня есть работающая программа на F#, которая запускает Dominion, карточную игру. Я хотел бы использовать генетический алгоритм для определения оптимальных стратегий игры. Однако я мало что знаю об ИИ или генетических алгоритмах. Не могли бы вы указать мне на какую-нибудь хорошую литературу для начала?

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

Жестко закодированный подход мог бы выглядеть примерно так:

def play(hand, totalDeck):
    if hand contains Smithy then use Smithy
    if hand contains enough coins for Province then buy Province
    if more than 30% of the totalDeck is Smithy, then buy coins

Я думал описать стратегию в терминах вектора целевых частей общей колоды для каждой карты:

[Smithy, Province, Copper, ...]
[.3, .2, .1, ...]

Затем, чтобы мутировать бота, я мог бы просто изменить этот вектор вокруг, и посмотрите, будет ли мутированная версия лучше. Фитнес-функцией будет средний балл за игру в Dominion против множества других ботов. (Счет одного бота зависит от того, против кого он играет, но мы надеемся, что, сыграв много игр против многих ботов, он может сравняться.)

Есть ли в этом смысл? Верным ли путем я иду?

5
задан HostileFork 8 October 2012 в 03:58
поделиться