とあるプログラミングの課題で、将棋のプログラムを作りました。
そこで、将棋に人工知能をつけてみようと思い立ち、先輩に相談したところ、「遺伝的アルゴリズムを使うと人間に勝つのは無理だけど結構マシなのができるんじゃないのか」といわれました。
僕は今まで遺伝的アルゴリズムについてまったく無知だったので、基礎の本を買って勉強しました。
しかし、将棋の人工知能ってどうやったら作れるんだろう?とそこで考え込んでしまい、いろいろと思考をめぐらしています。
僕が考えているのは決して強いプロうグラムじゃなく、学習していくようにしたいのですが、
1.どの駒をどこに動かすという遺伝子カードを何十万枚と作る(乱数か何かを使って)
2.カードの適合度にしたがって、ある1枚を引き、今の盤面で有効ならば実際に駒を動かす
3.その2手目か3手目に盤面を評価し、以前よりも状況が悪化していれば、そのカードの適合度を落としていく、有利になればカードの適合度を上げる
(4.交叉や、突然変異を用いてカードを変化させる?)
こんな感じにすればまあまあかなと考えていました。
しかし、ここでよく考えると、
たとえあるカードによって状況が不利になって適合度が落ちても、それは別の状態において有利になれるカードなのかもしれない。それなのに適合度を落としてもよいのか?
むちゃくちゃなことを書いているかもしれません。遺伝的アルゴリズムではないことを書いているかもしれません(爆)。が、皆さんはこの疑問についてどう思われますか?
何かご意見、アドバイスをお願いします。
No.1
- 回答日時:
むかし遺伝的アルゴリズムでリバーシを作ったことがあります。
そのときの結論は「遺伝的アルゴリズムを使うより、
先読みをいくらかした方が強い」というものでしたが
それはともかくとして…
>別の状態において有利になれるカードなのかもしれない。それなのに適合度を落としてもよいのか?
これは「そういうもの」と考えるべきでしょう。
かりに特定の状況で適合度が低くても、
他の多くの状況で適合度が高ければ、最終的な成績は高くなります。
もしも、偶然が重なって、真の適合度が高いのにハネられることになっても、
偶然を前提にしたアルゴリズムなので、それも仕方ないと思います。
No.2ベストアンサー
- 回答日時:
私も、GAよりもMiniMax法などを利用した先読みの方が強いと思います。
純粋にGAだけでやるとすると、盤面の「雰囲気」から適当に駒を動かすってことになっちゃうので(^^;
将棋ってのは似た駒配置であっても、1箇所違えば全く別の局面になるんで、GAには分が悪いような…
GAを生かすとすれば、相手プレイヤ(人間)のクセを見抜く部分に使えば、効果的なんじゃないでしょうか。
攻め/守りのバランスを決めたり、相手プレイヤが「好きな」駒を重点的に防御したり(笑)。
ちなみに、先読みをするには盤面の「数値化」を行います。まず、自分に有利な盤面だと高得点、不利な盤面だと低得点になるような判断アルゴリズムをつくります。
んで、CPUの手番では仮想的に駒を色々動かしてみて、そのときの得点の動きで手の良し悪しを判別します。
強いプログラムになると、内部に定石を大量にストックしているみたいですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 囲碁・将棋 詰将棋。過去作品との重複、盗作、偶然の一致については誰が検証しているのか? 2 2023/04/26 20:14
- その他(ニュース・社会制度・災害) 出生前診断や遺伝子検査については様々な意見がありますが、皆さんは賛成反対のどちらですか? 2 2022/04/10 19:48
- クレジットカード クレジットカードやローン申し込みのことでご相談です 1 2023/03/08 11:37
- 教育・文化 高校生です。将来政治家になって犯罪率を0.0%代にしたいのですが、可能だと思いますか? ㅤ 大まかな 8 2022/08/27 18:51
- 囲碁・将棋 藤井5冠はめっちゃ強いの 7 2022/09/17 07:08
- 電子マネー・電子決済 イオンカードの銀行について 1 2023/02/14 00:13
- 電子マネー・電子決済 デビットとpayカードの違い 2 2023/04/03 10:43
- 出会い・合コン 恋愛結婚って弊害が大きすぎませんか? 7 2022/04/10 16:17
- 囲碁・将棋 羽生さんが将棋連盟会長になった真の理由は…? 2 2023/06/14 17:26
- BTOパソコン 藤井棋士の脳感ピューター 1 2023/06/29 02:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
過剰なオブジェクト指向脳から...
-
16x16のスプライトフォント
-
本格的なWebアプリを公開する時...
-
Pythonって何を意識した言語な...
-
プログラミング未経験者(殆ど未...
-
オブジェクト指向プログラミン...
-
プログラミング初心者です。 Wi...
-
vba クリップボードクリアにつ...
-
chatGPTで次々と質問をしていく...
-
家庭のパソコンで Python の 環...
-
CLispのloop内の挙動について
-
昔のパソコン少年の武勇伝「店...
-
GoogleAppsScript文字列置換の...
-
sublimit textっていうエディタ...
-
最新のプログラム言語を学ぶに...
-
初心者powershellのPS1ファイル...
-
プログラマーと学歴の関係性に...
-
pythonにてseleniumを使うも、...
-
Google ColaboでGUI作成
-
そのまま使っただけなのに・・...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
将棋ウォーズをしている方に質...
-
チェスは何歳から覚えられますか?
-
将棋10級認定となるにはどの程...
-
あいつは、良い、こま。
-
「相手の方が一枚上手だった」...
-
入玉すると、何故詰ますのがむ...
-
将棋で、誤って相手の駒を盤上...
-
チェスってルール的に将棋より...
-
将棋で53同銀とは、どういう意...
-
碁を打つ、将棋を指す、ではチ...
-
将棋の駒の名前の由来をおしえ...
-
チェス駒の呼び方は?
-
ソフト指しってどうやって判断...
-
Python: 文字の反転表示
-
【将棋】駒の片付け方
-
なぜ将棋の打ち歩詰めはいけな...
-
待ち駒は卑怯でしょうか。
-
加藤一二三伝説って、どこまで...
-
中飛車について教えて下さい
-
将棋 攻めのみと守りのみで対...
おすすめ情報