Hatena::ブログ(Diary)

merom686の日記 このページをアンテナに追加 RSSフィード

2017-05-12

shogi686microの強さについて

shogi686microは将棋の思考エンジンである。とにかくソースコードをシンプルに短くすることを考えて作った。ショートコーディングという意味ではなく、シンプルで見やすいソースを目指している(実現できているかはともかく)。

探索がアルファベータで評価関数が駒割というオーソドックスな作りで可能な限りシンプルに書くと、このくらいの強さになるのではないかと思う。

ただし、shogi686microではRootで指し手をランダムシャッフルしたり、持ち駒1種類につき50点を加点したりしている。駒割だけの評価関数だとあまりに面白味がないので、1行で書けるような工夫はしてある。

さて、ここからが本題。こんな作りでも4手読みLesserKaiといい勝負ができるのは、静止探索をしっかり作ってあるからだ。shogi686microも、もちろんバグがあるとか、ちょっと変更するだけで強くなるのを見逃してるとかあるだろうけど、そんなんでも静止探索はちゃんと入れてるので、目先の駒損は避けてくれる(ほんとは指定手数を過ぎたあともリキャプチャは読むようにしたい)。

静止探索とは手番を活かして、駒の取り合いによっていま以上の評価値になる手があるかどうかを探す探索でして、つまり、手番を持っている側が現在の評価値以下になることはない(と仮定している)わけです。(この現在の評価値のことをstandpatと呼びます。)

ひよこカルロ将棋のnpsについて - ひよこ将棋、はじめました。

この辺りがわかりやすいだろうか。実装はわりと単純なんだけど、知らないと何をやったらいいのかわからないので、やっぱり静止探索は難しい。

ということで、shogi686microは弱いけど、アルファベータ法を知っている人が静止探索の勉強をせず自力でshogi686microに勝つソフトを作るのはけっこう難しいという話。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/merom686/20170512/1494596005