TadaoYamaokaの日記

山岡忠夫Homeで公開しているプログラムの開発ネタを中心に書いていきます。

Google ColabでUSIエンジン同士の対局を行う

Pythonの高速な将棋ライブラリcshogiにUSIエンジン同士の対局機能を追加した。

先日、cshogiにJupyter Notebook上で盤面をSVGで表示できるようにしたが、その機能を使って対局中の盤面を表示するようにしている。
これによって、Google Colab上で、USIエンジン同士の対局を観戦できるようになる。


以下のようにして、Google Colab上でUSIエンジン同士の対局ができる。

インストール

!pip install git+https://github.com/TadaoYamaoka/cshogi

USIエンジン同士で対局する

from cshogi import cli

cli.main('/content/LesserkaiSrc/Lesserkai/Lesserkai', '/content/LesserkaiSrc/Lesserkai/Lesserkai')

以下のように1手ずつ盤面が表示され、終局すると結果が表示される。
(エンジンに送るUSIコマンドとエンジンからのinfo出力も、そのまま出力している。)

f:id:TadaoYamaoka:20190825182544p:plain

連続対局

連続対局することもできる。

# 設定例:対局数2回、秒読み1秒
cli.main('/content/LesserkaiSrc/Lesserkai/Lesserkai', '/content/LesserkaiSrc/Lesserkai/Lesserkai', games=2, byoyomi=1000)
手動操作

USIエンジンを手動で操作することもできる。

from cshogi.usi import Engine

engine = Engine('/content/LesserkaiSrc/Lesserkai/Lesserkai')

engine.isready()
engine.usinewgame()
engine.position()
engine.go()
engine.quit()

チュートリアル

Google Colabで使い方がわかるJupyter Nodebookを公開したので参考にして欲しい。
colab.research.google.com

cshogiの仕様変更

今まで指し手などを文字列を引数で渡す場合、バイト文字列としていたが、標準の文字列型に変更した。
互換性がなくなっているため、既存のプログラムの修正が必要になる。

以前に作成したdlshogi-zeroも修正が必要なため、後日対応する予定。

今後の予定

将棋AIで学ぶディープラーニングJupyter Notebookを、Google Colab上で対局できるようにする予定。