最終更新日:2010.5.11
下記の選手権使用可能ライブラリの使い方のメモ。
ここで紹介するのは
です。
Ubuntu 9.10
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
でコンパイルすると、リリース用の実行ファイルが生成されます。
以上でコンパイル完了です。
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が、特徴ベクトルを抽出するソースコードを含んでいます。あとはこれを使って予測器のパラメータを学習させます。
選手権ではこのソースを使うことは出来ないので注意。(特徴ベクトルを抽出するソースは大会では使う必要はありません)
osl/lib/eval/ml/openMidEndingEval.cc を頑張って読めば、追加のやり方も分かると思います。
Eclipseを使うとIDEのデバッガが使えます。1行毎に実行したり、変数値を参照したりとなにかと便利。
まず、CDTをインストール。
http://www.eclipse.org/downloads/
からEclipse IDE for C/C++ Developersをダウンロード&インストール
私は第20回世界コンピュータ将棋選手権に「Staty」として参加しました。そのときに「GPSのソースがコンパイルできない」という方が多くいらっしゃったので私がGPS将棋のライブラリを用いて将棋プログラムを作ったときの記録を残しておきます。
このメモ書きがコンピュータ将棋を作ってみたいという方のお役に立てたら幸いです。
私の環境ではosl-for-csa (バージョン 0.5)ではコンパイルエラーを潰すのにかなり時間がかかりましたが、バージョン0.6は素直にできました。なので一度GPS将棋ライブラリのコンパイルに失敗した方でも、もう一度挑戦してみるといいかもしれません。