中盤は少し遅いが結構強い
今は、macOS版MRWorkerの開発フェーズで、評価精度の向上用作業を完了した。特徴が必要なのでFFO40-59性能を上げる細工をしたのだが、その悪影響を乗り越えて、少し遅くはなったものの、中盤も強くなっている。
FFO40-59性能を上げる細工というのは、それらに対する完全読みを行っている最中にMRSolver内で評価している盤面を、データベースデータとして出力し、そのデータをデータベースで完全読みで補完処理を行い、学習データに追加する、という細工になる。
理屈の上では、上記の様にする事で、FFOテスト実行中に評価する事になる盤面に対する評価値が、正しい値に収束する可能性が高くなる。
その結果として、FFOテスト性能を決める2大要素の一つである所の評価ノード数を減らせる可能性が高くなる訳だ。
実際、上記の細工を行わなかった場合と比較すると、行なった場合には、評価ノード数は1割くらい減っていて、それに連動して処理時間も1割くらい短縮できている。
まあ、1割というと、50秒かかっていた処理が45秒でできる様になった! みたいな話なので、そんなのはどうでも良いよ! と、言う人も多いかもしれないのだが、このブログの熱心な読者であれば、MasterReversiの公開が2007年まで、数年はずれ込んだ原因が、scrzebraと比較して、FFO性能が劣っていたから! という話は覚えているかもしれない。
つまり、MasterReversiは、2003年くらいから真面目に開発を始め、2004年の暮れくらいには、とりあえず、初版に近い格好には出来ていたのだが、当時、巷で人気だったWZebraと比べると、終盤解析速度で劣っていた。
なので、その後は、基本処理ルーチンのアルゴリズムを作り替えたりしながら、打倒scrzebra! みたいなことをしていたのだが、2005年くらいには、WZebraのコンソール版である所のZebraのソースコードが公開された。
MasterReversiの処理ルーチンを改良していた作者的には、実際のところ、やめてよ! みたいな所もあった。
これは、Zebraのソースコードが公開されてしまうと、苦労しなくても、scrzebraと同等性能のソフトが作れてしまうので、新規参入者が有利になるからだ。
つまり、それまで苦労して自前ルーチンを改良してきていた作者が相対的に不利益を被ることになるので、やめてよ! みたいに思った訳なのだが、公開されてしまったモノは仕方ないので、作者的にも、そのコードは読んでみた訳だ。
その結果としては、最早、参考になる技術は見つからなかったのだが、Zebra的にも、苦労したんだなあ、というのは伝わってきたので、何となく、親近感は湧いたかもしれない。
と、言う事で、MasterReversiが並列演算を導入せざるを得なくなったのは、実は、前述の様に、Zebraのソースコードが公開されてしまったからだ。
何故なら、当時のMasterReversiのリバーシエンジンの性能は、scrzebraに迫っていたのだが、それでも、まだ、1割程度は劣っていたので、Zebraのソースコードを流用する新規参入ソフトが出てきたら、それらにも敵わない! という状況だったからだ。
なので、作者的には、Zebraには無かった並列演算機構を追加する事になったのだが、その結果として、それを使えば、一応、測定可能なくらいには、scrzebraよりも高速に処理を終えられたので、作者的にも、やっと、MasterReversiを公開できた訳だ。(参考:FFOテスト結果 Ver1.0.0)
上記の通りなので、MasterReversiの初版リリースが3年も遅れた背景には、scrzebraと比較して、FFOテストで1割性能が劣っている! という問題があったからで、もし、1割程度でも勝っていたら、2004年の暮れくらいには、MasterReversiは公開していたかもしれない。
と、言う事なので、作者からしてみれば、FFOテストでの1割の性能の違いというのは、大きな問題になる。
なので、ARM版MasterReversiの開発時に書いた様に、Edax4.5.3では、Ver1.5.5の時に性能を比較していたEdax4.5.0よりも1割近く性能が向上していたので、作者的にも、今回、無理をしてでも、MRSolverの性能を向上させておく必要があった訳だ。(参考:FFOテスト結果 Ver1.5.5)
その結果として、多分、MasterReversi Ver1.5.8では、Ver1.5.5と比較しても、1割くらいはFFOテスト性能が向上する格好になる筈なのだが、だからといって、他ソフトと対局させたら弱くなった! というのでは、本末転倒な所もある。
なので、中盤評価についても、無理した悪影響が出ない様に、細心の注意を払いつつ、色々と細工を入れた結果、こちらについては、処理時間は少し長く必要になったのだが、Ver1.5.7と比較しても、少し強くなった感じの今日この頃だ。