mブランチ(やねうら王 V4.89m)とやねうら王最新版(V5.40)との棋力差の計測をRotaさんがされている。
+R128.75の差だという。
MOVE_NULLのバグ修正したのと、LMRのreduction改善したのと、探索パラメーター、私の手元でチューニングしたのに全部置き換えたのと、Stockfishの更新を現在分まで全部ぶちこんだ結果だと思われる。
これで、+R130ぐらいになってるとしたら、いよいよ電竜戦の戦犯が私だということに…😅
// 電竜戦の時点のやねうら王公式の思考エンジンからは+R60程度と思われる。
まあ、私も作業が間に合ってなかったので許してほしい。あと、電竜戦以降、やねうら王のリファクタリングがかなり進んで全体的にも綺麗なソースコードになってきた。正直言って、ソフトを強くするより、そっちのほうが何倍も楽しい。
リファクタリングしていると、いままでの雑に設計してあったゆえに発生していたバグを見つけることがある。Aperyの定跡読み込み時のバグとかいまごろになって発見した。
将棋ソフトの強さこそ正義!みたいに思っている人(残念なことにほとんどの人はそう思っている)にリファクタリングの大切さをわかってもらうのは難しい。
しかし、世間の人々の理解がどうであれ、ソフトウェアとは一種の高層建築物なのである。基礎工事が手抜き状態で高層建築物を構築すると崩落してくるのである。だから2階建てぐらいならまだしも、高層建築物化するときには基礎工事を完璧に行わなければならない。
ちなみに、いま定跡部分に大きな機能を追加しようとしている。この機能の追加のためにも、定跡部のリファクタリングは必須なのだ。(と私は思っている)
追加される機能は、
・定跡読み込みの高速化
・定跡書き出しの高速化
・マルチスレッド対応
・MCTSで定跡を生成する機能
・MCTSで生成された定跡の読み込み対応
の予定だ。
// 以上は、誰かに対して約束するものではない。私自身のメモにすぎない。
これが無事終わったら、週明けぐらいにやねうら王V6.00として正式にリリースする。
>2階建てぐらいならまだしも、高層建築物化するときには基礎工事を完璧に行わなければならない
この例えいいですね。
リファクタリングが楽しいと感じるポイントは特にどういうところですか?
そのリファクタリングによって、その機能を利用するコードが短く書けるようになっていると、ロトの剣を手に入れた気分になりますです。
『宮本定跡』のような100万手規模の定跡を『やねうら王2』に搭載されるかもしれないコンバータで柿木将棋の思考以外で使用する場合でも、高速化やマルチスレッド化の意味がありますか?
定跡読み込み部分は並列化されてないので、マルチスレッド意味ないですねー
// あまり恩恵がないかと思ってしてないだけなので、今後、もしかしたらやるかもです。
定跡読み込みは速度的には以前(2年前)よりだいぶ改善されてるはずですけども。