連続自動対局フレームワーク作りました

やねうら王miniの連載記事のなかで、やねうら王を強くしていくに当って、探索部を改良しながら、自己対局で勝率を計測して、都度そのときのレーティングがいくらぐらいであるかを示したいのですが、そのためには自己対戦がある程度自動化されていないと面倒です。

また将棋所やShogiGUIでは秒読みを1秒より短く設定できない(エンジン側で将棋所から送られてくる設定を無視して思考しても良いのですが)ことや、勝敗の数を外部から取得するのが面倒であるなどの理由により、こういうことには不向きです。

そこで自作するのが一番良いと判断して、USI対応エンジン同士を連続自動対局させるフレームワークを作りました。たぶん、多くの開発者の方はすでに似たものを作られているかと思いますが、案外作るのが面倒くさいので公開しておきます。

一応、1手0.1秒や0.05秒などのときの対局結果の精度を高めるために、極限まで速度を切り詰めたかったのですべてC++で書きました。やねうら王miniのプロジェクトの副産物の一つだと言えるでしょう。

やねうら王のGitHub
https://github.com/yaneurao/YaneuraOu

source/engine/local-game-server/
にあります。

snapshotはこれです。
https://github.com/yaneurao/YaneuraOu/blob/d37e33006228c69f8df1476a004f2e1a190ee880/source/engine/local-game-server/local-game-server.cpp

書きなぐってあるのでコメントもほとんど無いですが、まあ読めるかと思います。
使い方は上のソースコードのコメントとして書いてあります。

定跡としてsfenファイルからランダムに1行取り出し(1行=1局)、その棋譜のX手目の局面から対局が開始する機能があるので、同じ進行にばかりなって勝率が偏るということはありません。(たぶん)

このソースコードはご自由にお使いください。

連続自動対局フレームワーク作りました」への6件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です