うらお電王トーナメントでコンピューター将棋に熱い視線が向けられる昨今、将棋の思考エンジンに興味を持つ人も多く、教育的なソースコードが求められていると思う。1000行で書けるのかどうかは知らん...。2、3000行になったらゴメン。20151000行というのは、短めでという程度の意味で、コメントを無理に削除して、無理に改行を詰めて1000行に収めてもそれは全く教育的ではない。いうことは何も意味を成さない。今回の目的として「教育的な」ということが最も優先されるべき事項だ。そこで、行数をカウントするとき、コメント行はノーカウントとする。enumの各定数に対しても改行を入れながらコメントを書いていきたい。それだとenumの中身は本来ならば、1行であっても複数行に渡ってしまう。いうのを無理に1行に収めたくはない。そんなわけで、無理に行数を詰めることはしない。コメントを削ればだいたい1000行か2000行ぐらいで収まるんじゃね?ぐらいのアバウトさで理解してもらいたい。Bonanza6のソースコードは、空行を除くと25,863行。最新のAperyのソースコードは、空行と//によるコメント行を除くと9,612行。して1,000行程度でBonanza6と同等の棋力って、結構ハードル高いのか?秘術の限りを尽くすわ...。2015それより重要なのはBonanza6より強いということだ。これも「教育的」であることと同じぐらい重要なことだ。Bonanza6より弱いソフトは、すべてうんこであると私は思っている。...いまコンピューター将棋開発者の半数ぐらいを敵にまわしたような気もするが、ご寛容にお願いしたい。教育的なコードとは言え、やねうら王miniをうんこにはしたくないのだ。どれだけ美しくコードを書こうとも、Bonanza6の棋力にすらないなら、それは現実世界で全く通用のしない、間違った教育なのだ。私はそういう偽りの教育が大嫌いなのだ。...などと理想を高く高く掲げるのは簡単だが、Bitboardを使った場合、テーブル初期化と指し手生成だけで500行ぐらいあるんだよな。言って指し手生成にBitboardを使わないのはいまどきありえない。行数を縮めるのが今回の目的ではないのだ。現実世界で通用するプログラム。このあと作りこんでいけばちゃんとトップレベルのソフトに匹敵する棋力となるプログラムの作れる土台となるプログラムが必要なので、Bitboardを使わないという選択肢はない。「速度10%ぐらい遅くなるけどこっちのほうがソースコードが短くなるのでこっちにしとこう」などというプログラムは1行も書きたくないのだ。私としてはやねうら王miniのソースコードにそのまま書き足して、やねうら王(2016)にしたいわけだ。うら王(2016)にするときにソースコードがまた大改造になるのは嫌なのだ。そこで、1000行を大幅に超えようとも、Bitboardは用いる。逆に、静止探索やSEE、1手詰・3手詰めなどはあえて書かないかも知れない。私はそれらは必須とは思っていないからである。並列化もいまどきYBWCなんか流行らないしな。そんなトップソフトが採用していないような並列化の手法を採用しても仕方がないと思う。最新版のStockfishのようにちゃんと書く。ここまでの要点として行数が多くなろうとBitboardは使う高速化にそこそこ真面目に取り組むやねうら王(2016)とある程度共通のコード探索の並列化はする探索の並列化にYBWCを使わない強さはBonanza6以上それでもコメント行を除き、2000行には収めたい(収まる予定)こういうことである。次に、Aperyの評価関数バイナリを使おうと思っていたのだが、いくつか問題が出てきた。最新のAperyの評価関数バイナリには手番が入っているので、以前のものの倍のサイズがあるということ。開発時に読み込みに時間がかかるのは嫌だ。冬場、寒くなってきたので布団に入りながらノートパソコンで開発したいのだが、このノートパソコンがメモリ1GBしか積んでいない。評価関数が読み込めないわけであるな。あと、Piece番号の振り方がやねうら王と少し違うので、わざわざAperyの評価関数バイナリを読み込むために変換部を書くのも嫌だ。そこで、やねうら王miniの評価関数バイナリはやねうら王のものを使うことにする。3駒関係、あまりうまく学習できたものがないのだが、まあいいや...。Bonanza6ぐらいにはなるっしょ...。C++2015でビルド可能(私がその環境で開発しているため)CPUはHaswell以降が望ましい。開発用のノートPCでも動かないと嫌なのでCPUがSSE4までサポートしていれば一応は動くようにしてあるが、それだとめちゃんこ遅い。うら王miniのソースコード公開と同時ぐらいに「やねうら王miniソースコード完全解説」というのをこのブログに書く。(気が向いたら)やねうら王miniは年内公開に向けて着々と準備中である。:>やねうら王miniを年内に公開するので、まずは鎮座して待たれよ。鎮座しておりますが、少々足がしびれてまいりました。して、なりよりこのままの姿で年を越すのだけはいやでございます。:学習部のコードはいずれはつけたいと思っていますが、年内公開の時点ではつけないと思います。いま新しい学習方法を考え中で、そのへんの成果が出れば、やねうら王miniのほうに、やねうら王(2016)からportingしてきます。:>そこで、行数をカウントするとき、コメント行はノーカウントとする。:いまどきの評価関数は利きを使うので利きの計算が遅いと不利になるので、(やねうら王miniも含めて)時代はApery型のBitboardのレイアウトですね。利用可能という事ですね。(体形では、ありません。)コンパクトで棋力の高い実行ファイルなら、スマホ用アプリとか出てきそうな気がします。:棋力はそんな...期待しないでください。Bonanza6よりは強くしますけども、そこが主眼ではなくて、多くの人に興味を持ってもらうのが狙いです。3流の自分にも理解できるものであるといいなー。そんなことは置いといて、思いうぞんぶん妙技をふるってください。