れさぴょんgcc版 (lesserpyon-gcc)

Warning.

(2011.2)
れさぴょんgcc版は、もはやメンテナンスされていません。Daemonshogi (デーモン将棋) をご利用ください。

(2008.6.26) 新規作成。

れさぴょん (lesserpyon) はコンピュータ将棋の学習用のライブラリです。池泰弘氏が開発しています。

オリジナルは下記から入手でき、2008年6月現在の最新版は、れさぴょんv3 です。

このページでは、gccでコンパイルできるようにした版を公開しています。

将棋ライブラリ

ほかにフリー(自由)に入手できるライブラリは、以下のものがあるようです。

GPS将棋のライブラリ OpenShogiLib (osl)
ライセンスはBSDスタイル. C++のテンプレートを使いまくっています。boostから作らないといけなくて、コンパイルが難しすぎます。試すことはできませんでした。
GNU shogi
最新バージョンは、v1.3.2. ライセンスはGPLv1 or later. データの持ちかたがメモリの小ささ優先すぎて、効率が悪いように見えます。
daemonshogi のライブラリ SI SHOGI Library
ライブラリ部分のライセンスはLGPL. れさぴょんに似たデータ構造です。

コンピュータ将棋協会 (CSA) 主催のコンピュータ将棋選手権で使用することができるのは、れさぴょんとOpenShogiLib の二つだけです。

れさぴょんgccバージョン

Fedora Linux 9 (gcc 4.3.0) でれさぴょんv3をコンパイルするとエラーが出ます。あと、気づいた点がいくつかありましたので、直してみました。

cygwin (gcc 3.4.4), cygwin (target = mingw) でもテストしました。

+0.0

文字コードをUTF-8にし、今どきのgccでコンパイルできるようにしただけです。

lesserpyon3-gcc-0.tar.gz

+0.1

(2008.8.15)

ざっとコードを眺めて、今後改良しやすいように、ヘッダファイルやソースファイルを分割しました。動作は、バグと思われるところも含めて、まったく手を入れていません。

次の点が気になりました(が直していません)。

バグと思われるもの:

  • 局面ハッシュの種を作るときに、おそらく誤って、bit or している。ほとんどのビットが1になってしまって、衝突 (collision) の可能性が高い。rand() の使い方も悪い。下のほうのビットを使ってはいけない。

効率に関するもの:

  • pin情報を局面クラスで保持せず、着手可能手を生成するときに毎回計算している。pin情報があれば簡単に判定できるのに使っていなかったりする。
  • 二歩チェックを毎回地道に計算している。
  • 王手の生成で、すべての手を生成し、実際に局面を進めている。無駄が多い。
  • 着手可能手を配列で持っているため、コピーが多く発生している。
  • コードの重複がやたらと多い。

デザインに関するもの:

  • 棋譜の(各局面の)ハッシュリストをグローバルに一つしか持たないため、マルチスレッド化した時点で破綻する。(千日手チェックを誤る。)
  • 盤をあらわすのに、盤の周りのpaddingが1足りないため、駒の相対位置を1次元の数値で一意に表現できない。かなり重要だが、直すのは大変。

lesserpyon3-gcc-0.1.tar.gz (revision 326)

+0.2系列

(2008.8.14 この節追加。)

手を入れ始めました。思考ルーチンは完全に書き換えようと思います。このバージョンではまだランダムに動かすだけしかできません。

Done::

  • 詰め将棋をdf-pn で解くようにした。
  • 局面ハッシュの種を固定した。分散環境でも使える。
  • pin情報を局面クラスのメンバにし、積極的に利用するようにした。
  • 王手生成ルーチンを書き直し、できるだけ局面を進めなくてもすむようにした。
  • 候補手のリストMoveListクラスを用意した。
  • 棋譜を持つShogiGameクラスを作成。
  • テストケースを書いた。
  • コードのclean up.

TODO::

  • 通常探索を MTD(f) にする。
  • df-pn の改良。(1) 証明駒・反証駒, (2) GHI 対策。
  • テストの充実。
  • MPI で分散できるようにする。