やねうら王オープンソースプロジェクト

ソースコードのダウンロード先

導入手順

開発の目的

  •  教育を目的として、現実的な将棋プログラム(Bonanza6より強い)が、2000行程度で書けることを示す。(当初、1000行程度を想定していたが、トップソフトと同等の指し手生成速度、実用に耐えうる将棋の思考エンジンフレームワークにしようと思ったため、行数がずいぶん増えた。Bitboardと指し手生成だけで1000行ぐらいある。)
  • Bonanza6は空行を除くと25,863行。2015年11月電王トーナメント直後に公開された最新のAperyのソースコードは、空行と//によるコメント行を除くと9,612行。本プロジェクトがいかに困難な目標設定であったかがわかる。
  • 本プロジェクトのために作者(やねうらお)が、1からソースコードを作成した。
  • より詳しいプロジェクトの意義については、「やねうら王miniの公開に向けて」に詳しい。

バグ等について

  • pull request歓迎。
  • ただし行数が増える改造はあまりしたくない。(わずかな改良で強くなるのはもちろん歓迎)
  • わずかな高速化のためにソースコードが読みにくくなるのもやねうら王miniではあまりしたくない。

思考エンジンの種類

スマホ(Android)版やねうら王

評価関数ファイルのダウンロード

Apery,Stockfishへのステップに

  • 教育的な意図から、Apery、Stockfishの関数名になるべく合わせてあります。本ソースコードを読んだあと、それらのソースコードにとっつきやすくするためです。

謝辞

  • Apery → 遠方駒の利き、縦型Bitboard
  • Bonanza → 3駒関係
  • Stockfish → データ構造、探索
  • SilentMajority → 探索パラメーター
  • tanuki- → 学習部、AVX2高速化
    以上、5ソフトからは多くのアイデアを参考にさせていただきました。
    それらのソフトの作者に感謝致します。

ライセンスについて

  • GPLv3(公開当初)
  • MIT License(最終的な目標)

やねうら王miniのソースコードの解説文書

1.やねうら王miniの全般的な使い方、各structやenumの説明などについての連載。

2.やねうら王miniを使って協力詰めsolverを作り、終盤の探索について学ぶ連載。

3.Long Effect Library完全解説

長い利きに関するプログラミングライブラリ。これがあると利きの数を得たり、超高速1手詰め判定が出来たりします。

やねうら王miniプロジェクトの副産物

  • 協力詰めsolverを公開します — 『寿限無』(19447手)、『寿限無2』(38889手)、『寿限無3』(49909手)が解ける協力詰めsolver。将棋所、ShogiGUIから詰将棋エンジンとして登録して使えます。
  • 連続自動対局フレームワーク作りました — エンジン同士の連続自動対局を行なうためのフレームワークです。1手0.1秒、0.05秒というような超絶過酷な条件での連続自動対局が出来ます。定跡ファイルを読み込み、ランダムに棋譜を1つ選び、その棋譜のX手目から開始する機能も備わっています。
  • やねうら王 王手将棋エディションを仮公開しました 王手をかけた時点で勝ちという変則ルールに基づく将棋です。王手将棋用の評価関数V1(+R300up)、V2(+R340up)という驚異的な棋力の伸びを見せ、最終的に R4250相当となり、王手将棋として世界最強のソフトとなりました。
  • 人間の棋譜を用いずに評価関数の学習に成功 プロ棋士の棋譜を用いずに評価関数の学習に成功しました。リゼロ評価関数と呼ばれています。
  • 評価関数のキメラ化コマンド公開しました 棋風の異なる二つの評価関数を合成して新しい棋風の評価関数を誕生させるキメラコマンドについて。

定跡関連

開発者向け資料

拡張USIプロトコル

USIプロトコルでは痒いところに手が届かないので独自に拡張しています。その仕様を書いた資料をここにまとめておきます。

ビルド手順

作者の連絡先

やねうらお ( mail : yaneurao@gmail.com )
やねうら王公式サイト http://yaneuraou.yaneu.com/
やねうら王mini 公式ページ http://yaneuraou.yaneu.com/yaneuraou_mini/