三目並べの人vs人のプログラムを完成させ、ここから人vs CPU に派生させたいと思っているのですが
いろいろサイトを調べてもどうしたらよいかわからずご教授願いたいです。
モンテカルロ法で強化学習をしたいと考えています。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
CPUってそんな簡単にできるものじゃないんですよ。探索ってご存知ですか?ゲーム理論でいうゲーム木を用いたものなのですが、まずはそこを学んだ方が良いと思います。一つ一つ着実に行きましょう。
再帰関数として実装してやるのが一般的です。
あくまで一例です。色々な例外処理は抜けていますし省略も多いです。そこは自分で考えてください。
python
1def min_search(board,depth,target): 2 moves = generate_moves(board) 3 min_move = 1000000 4 if depth != target: 5 for move in moves: 6 value = max_search(update(move),depth+1,target) 7 if value < min_move: 8 min_move = value 9 else: 10 for move in moves: 11 value = evaluate_move(update(move)) 12 if value < min_move: 13 min_move = value 14 return min_move 15 16def max_search(board,depth,target): 17 moves = generate_moves(board) 18 max_move = -1000000 19 best_move = moves[0] 20 if depth != target: 21 moves = generate_moves(board) 22 for move in moves: 23 value = min_search(update(move),depth+1,target) 24 if value > max_move: 25 max_move = value 26 best_move = move 27 else: 28 for move in moves: 29 value = evaluate_move(update(move)) 30 if value > max_move: 31 max_move = value 32 best_move = move 33 return best_move if depth == 1 else max_move 34 35def min_max(target): 36 return max_search(board,1,target) 37 38if __name__ == '__main__': 39 best_move = min_max(5)#5手探索
投稿2017/08/04 18:50
編集2017/08/09 09:40総合スコア1392
0
盤の大きさによりますが、まずはシンプルにminimaxやAlpha-Beta Pruningなど定番の探索アルゴリズムを幾つか実装してみるのはいかがでしょうか。
その過程で局面ごとの評価関数の実装方法や、ゲーム木探索時のクセが見えてくると思うので、アウトプットを強化学習にも活かせると思います。また複数のアルゴリズム同士を対戦させて評価過程を見たりするのも楽しいですよ。
投稿2017/08/04 18:42
総合スコア196
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/04 19:13
2017/08/04 19:32
2017/08/09 08:44
2017/08/09 09:40
2017/08/09 10:07
2017/08/10 08:14
2017/08/10 09:25
2017/08/10 11:22
2017/08/10 11:29
2017/09/16 08:51
2017/09/17 06:58
2017/09/24 15:39