У меня есть работающая программа на 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 против множества других ботов. (Счет одного бота зависит от того, против кого он играет, но мы надеемся, что, сыграв много игр против многих ботов, он может сравняться.)
Есть ли в этом смысл? Верным ли путем я иду?