やね裏評価関数と38要素化の比較

(前の記事のつづき)


Bonanzaのmake_listは全体時間の5〜10%程度です。38要素化ではここが差分計算化できるのでほぼゼロとなります。やね裏評価関数ではここの差分化計算化が難しいのでこの5〜10%がほぼ残ったままとなります。


評価関数の差分計算自体は、やね裏評価関数のほうが計算コストは小さくて済むのですが、make_listの5〜10%が響いてきて、トータルで38要素化に勝っているとは言いがたいです。


しかし近年、評価関数パラメーターは増大する傾向にあって、NDFのようにBonanzaの3駒関係を三角配列に格納するのではなく、正方配列に格納するのが普通です。こうすると配列の大きさはほぼ倍サイズになりますが、make_listを差分計算化すると、直列化された駒番号の順序関係が保てないので三角配列が使えなくなるので仕方がないのです。(詳しい説明は時間がないので割愛。Bonanza6のmake_list()のソースコードを読むべし)


そこで私もやねうら王2014では38要素化+正方配列を採用するように書き換えました。ところが、近年、NDFのように評価関数に手番を盛り込んだり、今年のPonanzaのように序盤と終盤で評価関数を分けたりするのが流行りです。評価関数パラメーターの数は今後どんどん増えることは確実で、そのときに三角配列にしたほうがメモリが節約できる(ひいては、L3 cacheに収まりやすくなる)というような効果が期待できる可能性があり、もしかするとどこかで、やね裏評価関数のほうが38要素化より高速であるという状況が出てくる可能性もあります。


あるいは、やね裏評価関数のほうが配列の要素数は少なくなるので、PPP、あるいはKKPPのような純粋な3駒、あるいは4駒関係に評価関数が発展していくとき、やね裏評価関数が日の目を見ることがあるのかも知れません。