カードゲームのDominionを実行する F# プログラムが動作しています。遺伝的アルゴリズムを使用して、プレイの最適な戦略を決定したいと考えています。しかし、AIや遺伝的アルゴリズムについてはよくわかりません。手始めに良い文献を教えてもらえますか?
プレーの戦略は、与えられたハンドへの反応で構成されます。各ターンで、ボットに 1 枚のカードが配られます。配られたものに基づいて、アクション カードをプレイするか、新しいカードを購入するかを選択できます。目標は、できるだけ多くの勝利点カードでゲームを終了することです。
ハードコーディングされたアプローチは次のようになります。
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 を他のさまざまなボットと対戦させた平均スコアです。(1 つのボットのスコアは対戦相手によって異なりますが、多くのボットに対して多くのゲームをプレイすることで、これが均等になることを願っています。)
これは理にかなっていますか?私は正しい道を進んでいますか?