ソースコードのダウンロード先
導入手順
開発の目的
- 教育を目的として、現実的な将棋プログラム(Bonanza6より強い)が、2000行程度で書けることを示す。(当初、1000行程度を想定していたが、トップソフトと同等の指し手生成速度、実用に耐えうる将棋の思考エンジンフレームワークにしようと思ったため、行数がずいぶん増えた。Bitboardと指し手生成だけで1000行ぐらいある。)
- Bonanza6は空行を除くと25,863行。2015年11月電王トーナメント直後に公開された最新のAperyのソースコードは、空行と//によるコメント行を除くと9,612行。本プロジェクトがいかに困難な目標設定であったかがわかる。
- 本プロジェクトのために作者(やねうらお)が、1からソースコードを作成した。
- より詳しいプロジェクトの意義については、「やねうら王miniの公開に向けて」に詳しい。
バグ等について
- pull request歓迎。
- ただし行数が増える改造はあまりしたくない。(わずかな改良で強くなるのはもちろん歓迎)
- わずかな高速化のためにソースコードが読みにくくなるのもやねうら王miniではあまりしたくない。
思考エンジンの種類
- やねうら王nano (R2000程度) – やねうら王nanoの実行ファイルを公開しました
- やねうら王nano plus(R2500程度) – やねうら王nano plusの実行ファイルを公開しました
- やねうら王mini(R2750程度) – やねうら王miniのデバッグありが㌧
- やねうら王classic(R3000程度) – やねうら王classic正式版を公開しました
- やねうら王classic-tce(R3250程度) – やねうら王classic-tce版、正式公開しました
- やねうら王2016 Mid(R3450程度) – やねうら王2016Mid、final version公開しました
- やねうら王2016 Late(R3650程度) – 真やねうら王、公開しました
- やねうら王2017 Early(R4000程度)
- やねうら王2018 Otafuku(R4150程度)
- やねうら王2019 (R4300程度)
- やねうら王2022 (R4500程度)
スマホ(Android)版やねうら王
- やねうら王は、ShogiDroid対応しています。- やねうら王がスマホで遊べる時代に?!
評価関数ファイルのダウンロード
- やねうら王2016 Midで使える評価関数ファイル28バリエーション公開しました
- やねうら王2016 Mid以降ではApery(WCSC26)の評価関数ファイルをそのまま使うこともできます。
Apery,Stockfishへのステップに
- 教育的な意図から、Apery、Stockfishの関数名になるべく合わせてあります。本ソースコードを読んだあと、それらのソースコードにとっつきやすくするためです。
謝辞
- Apery → 遠方駒の利き、縦型Bitboard
- Bonanza → 3駒関係
- Stockfish → データ構造、探索
- SilentMajority → 探索パラメーター
- tanuki- → 学習部、AVX2高速化
以上、5ソフトからは多くのアイデアを参考にさせていただきました。
それらのソフトの作者に感謝致します。
ライセンスについて
- GPLv3(公開当初)
- MIT License(最終的な目標)
やねうら王miniのソースコードの解説文書
1.やねうら王miniの全般的な使い方、各structやenumの説明などについての連載。
- 連載やねうら王miniで遊ぼう1日目 — ビルド環境、ターゲットCPUの変更など
- 連載やねうら王miniで遊ぼう2日目 — 思考エンジンの仕組みからsfen文字列、”position”コマンドの説明まで
- 連載やねうら王miniで遊ぼう3日目 — デバッグ用のUSI拡張コマンドの説明から、段・筋・升まで。
- 連載やねうら王miniで遊ぼう4日目 — 指し手とその合成について
- 連載やねうら王miniで遊ぼう5日目 — 指し手生成器と生成される指し手の分類について
- 連載やねうら王miniで遊ぼう6日目 — 指し手で局面を進める
- 連載やねうら王miniで遊ぼう7日目 — 局面のhash値の計算
- 連載やねうら王miniで遊ぼう8日目 — 置換表の仕組みとその実装について
- 連載やねうら王miniで遊ぼう9日目 — ランダムプレイヤーを作ってみよう
- 連載やねうら王miniで遊ぼう10日目 — 将棋所で遊べるランダムプレイヤーの作り方
- 連載やねうら王miniで遊ぼう11日目 — 評価関数を呼び出して1手読みのAIを作る
- 連載やねうら王miniで遊ぼう12日目 — 指し手の合法性について
2.やねうら王miniを使って協力詰めsolverを作り、終盤の探索について学ぶ連載。
- 連載やねうら王miniを強くしよう1日目 — 協力詰めsolverを作ろう
- 連載やねうら王miniを強くしよう2日目 — Kifu for WindowsとShogiGUIを活用して協力詰めをどんどん解かせる
- 連載やねうら王miniを強くしよう3日目 — Clusterを用いた置換表について
- 連載やねうら王miniを強くしよう4日目 — 置換表を活用して中編(100手以上~1000手未満)の協力詰めが解けるsolverにする
- 連載やねうら王miniを強くしよう5日目 — 長編(1000手~)の協力詰めが解けるsolverを作る準備をする
- 連載やねうら王miniを強くしよう6日目 — 優等局面の判定について
- 連載やねうら王miniを強くしよう7日目 — 長編(1000手~)の協力詰めが解けるsolverにする
3.Long Effect Library完全解説
長い利きに関するプログラミングライブラリ。これがあると利きの数を得たり、超高速1手詰め判定が出来たりします。
- Long Effect Library 完全解説 その1
- Long Effect Library 完全解説 その2
- Long Effect Library 完全解説 その3
- Long Effect Library 完全解説 その4
やねうら王miniプロジェクトの副産物
- 協力詰めsolverを公開します — 『寿限無』(19447手)、『寿限無2』(38889手)、『寿限無3』(49909手)が解ける協力詰めsolver。将棋所、ShogiGUIから詰将棋エンジンとして登録して使えます。
- 連続自動対局フレームワーク作りました — エンジン同士の連続自動対局を行なうためのフレームワークです。1手0.1秒、0.05秒というような超絶過酷な条件での連続自動対局が出来ます。定跡ファイルを読み込み、ランダムに棋譜を1つ選び、その棋譜のX手目から開始する機能も備わっています。
- やねうら王 王手将棋エディションを仮公開しました 王手をかけた時点で勝ちという変則ルールに基づく将棋です。王手将棋用の評価関数V1(+R300up)、V2(+R340up)という驚異的な棋力の伸びを見せ、最終的に R4250相当となり、王手将棋として世界最強のソフトとなりました。
- 人間の棋譜を用いずに評価関数の学習に成功 プロ棋士の棋譜を用いずに評価関数の学習に成功しました。リゼロ評価関数と呼ばれています。
- 評価関数のキメラ化コマンド公開しました 棋風の異なる二つの評価関数を合成して新しい棋風の評価関数を誕生させるキメラコマンドについて。
定跡関連
- 将棋ソフト用の標準定跡ファイルフォーマットの提案(やねうら王定跡フォーマット2016) — 将棋ソフトで用いる定跡ファイルの標準的なフォーマットを提案し、そのフォーマット用の定跡ファイルを公開しました。
- やねうら大定跡はじめました 深い探索深さで長い時間思考することにより生成させた超巨大定跡。
- やねうら王を使って定跡を作る やねうら王の定跡コマンドの解説
- やねうら大定跡V1、公開しました。 やねうら大定跡V1
- 自己対局用に互角の局面集を公開しました 形勢互角の局面集(11818局面)
開発者向け資料
- 教師用局面ファイル、45億局面分を公開しました 評価関数パラメーターの学習のために活用してみてください。
- 将棋ソフトの機械学習の成否を判定するための資料 Apery(WCSC26)からdepth 8で生成した教師局面ファイル。自作の学習部のテスト等にご利用ください。
拡張USIプロトコル
USIプロトコルでは痒いところに手が届かないので独自に拡張しています。その仕様を書いた資料をここにまとめておきます。
- 拡張USIプロトコル 読み筋出力について – 千日手、宣言勝ちなどを読み筋の出力するための拡張。
ビルド手順
作者の連絡先
やねうらお ( mail : yaneurao@gmail.com )
やねうら王公式サイト http://yaneuraou.yaneu.com/
やねうら王mini 公式ページ http://yaneuraou.yaneu.com/yaneuraou_mini/