GPS将棋ライブラリの使い方メモ

最終更新日:2010.5.11

このページの概要

下記の選手権使用可能ライブラリの使い方のメモ。

  1. osl-for-csa (バージョン 0.6)
  2. gpsshogi-for-csa (バージョン 0.6)

ここで紹介するのは

  1. コンパイル
  2. 評価関数のパラメータ学習
  3. 特徴ベクトルの追加
  4. Eclipseでのデバッグ方法

です。

開発環境

Ubuntu 9.10

1.コンパイル

1. コンピュータ将棋のライブラリページから、

osl-for-csa (バージョン 0.6)
gpsshogi-for-csa (バージョン 0.6)

をダウンロードして解凍。解凍してできたディレクトリを同じディレクトリの下に置きます。たとえばshogiというディレクトリを作ったなら、

shogi/osl-for-csa-0.6
shogi/gpsshogi-for-csa-0.6

とします。次に、gpsshogi-for-csa-0.6をコンパイルするときにoslディレクトリを参照するため

mv osl-for-csa-0.6 osl

とリネームしておきます。

2. GPS将棋のページに書いてあるようにboost,cppunitをインストール。

cppunit のインストールはソースをダウンロード&展開して

./configure
make
sudo make install

で/usr/local以下にインストールされます。

3. osl-for-csaのコンパイル

まず、デバッグ,テスト用ライブラリを作成します。

cd osl/lib/
make

コンパイルが成功してれば、下記のライブラリが生成されています。

osl/lib/libosl_search.a
osl/lib/libosl_board.a 

もし、コンパイルに失敗し、下記のメッセージが出ていたら

/usr/bin/ld: cannot find -lboost_thread

ubuntu付属のパッケージマネージャでlibboostをインストール

libboost-thread1.40.0
libboost-program-options1.40
libboost-filesystem

4. gpsshogi-for-csaのコンパイル

cd shogi/gpsshogi-for-csa-0.6/bin/
make

で実行ファイルのgpsshogiが生成されます。なおこれはデバッグ用の実行ファイルとなります。

リリース用のライブラリをコンパイルするには

cd shogi/osl/release/
make

でリリース用のライブラリを作成し、

cd shogi/gpsshogi-for-csa-0.6/
echo RELEASE=t > makefile.local
cd bin/
make

でコンパイルすると、リリース用の実行ファイルが生成されます。

以上でコンパイル完了です。

2.評価関数のパラメータ学習

GPS将棋では、局面の状態を、約400万次元のスパースな特徴ベクトルで表現しており、局面の評価値は特徴ベクトルと重みベクトルの内積(つまり、特徴ベクトルの各要素の重み付け総和)となっています。ここではこの重みベクトルの学習の方法について書いておきます。

線形予測器のパラメータ学習に使えるソースコードは

などがあります。

局面からの特徴ベクトルを抽出するソースは、選手権使用可能ライブラリに含まれていません。なので、チームGPSが公開しているGPS将棋のソースをダウンロードして使わせてもらいます。

リビジョン2200がライブラリのリビジョンと推測(gpsshogi-for-csa-0.6とosl-for-csa-0.6に含まれるsample/lib/eval.ccの最終更新日から判断)ソースを下記URLからダウンロード&解凍します。

http://gps.tanaka.ecc.u-tokyo.ac.jp/cgi-bin/viewvc.cgi/branches/penguin6/?root=gpsshogi&pathrev=2200

そして、gpsshogi/sample/eval/bin/one-sided-features.ccが、特徴ベクトルを抽出するソースコードを含んでいます。あとはこれを使って予測器のパラメータを学習させます。

選手権ではこのソースを使うことは出来ないので注意。(特徴ベクトルを抽出するソースは大会では使う必要はありません)

3.特徴ベクトルの追加

osl/lib/eval/ml/openMidEndingEval.cc を頑張って読めば、追加のやり方も分かると思います。

4.Eclipseでのデバッグ方法

Eclipseを使うとIDEのデバッガが使えます。1行毎に実行したり、変数値を参照したりとなにかと便利。

まず、CDTをインストール。

http://www.eclipse.org/downloads/

からEclipse IDE for C/C++ Developersをダウンロード&インストール

  1. osl-for-csa-0.6.tgz,gpsshogi-for-csa-0.6.tgz を同じディレクトリ(shogi)に解凍し、osl-for-csaをoslとリネーム。shogi/osl, shogi/gpsshogi-for-csaと解凍したとして以後説明する
  2. デバッグ情報を付加するため、osl/makefile.confにDebug=trueを冒頭に記入(でないとeclipseで実行中のトレースができない
  3. eclipseでfile->new->standerd Make Project C++ (デフォルト設定でOK)
  4. file->inport->general->file system ディレクトリshogiを選択し、ディレクトリshogiのチェックを有効にする
  5. コンパイルする。画面左のフォルダツリーからgpsshogi\libを選択して右クリック->Build Make Target ->addでコンパイル
  6. あとは普通にデバッグ

このページの管理者からのひとこと

私は第20回世界コンピュータ将棋選手権に「Staty」として参加しました。そのときに「GPSのソースがコンパイルできない」という方が多くいらっしゃったので私がGPS将棋のライブラリを用いて将棋プログラムを作ったときの記録を残しておきます。

このメモ書きがコンピュータ将棋を作ってみたいという方のお役に立てたら幸いです。

私の環境ではosl-for-csa (バージョン 0.5)ではコンパイルエラーを潰すのにかなり時間がかかりましたが、バージョン0.6は素直にできました。なので一度GPS将棋ライブラリのコンパイルに失敗した方でも、もう一度挑戦してみるといいかもしれません。