完全にやる気なくした。電王トーナメントバージョンにもバグがあって、ちょっとしたことで挙動が変わるからスピードを測ることもできない。キラー手を使わなければ少し安定するっぽいが、それはキラー手にバグがあることを意味しないし。
ヒマなんで、大樹の枝をVisual C++でコンパイル通るようにしようとしたら、tupleをswapできないみたいで、ますます処理系への不信感が募る。手動でswap処理書いたらあっさり通ったが、シングルスレッドでも公開されたバイナリと挙動が違う。最新のソースも試したけど、挙動が変わるような修正はされていない様子なのに、また微妙に探索ノード数(同じ深さまで読んだときの)が違う。
誰が悪いのかわからない。普通なら、100%自分のミスと考えていいのだが、Visual C++をどこまで信用していいのかわからなくなっている。いやまあ、コンパイルできないことはあっても、計算結果が間違ってることはありえないので、プログラムのミスなんだろうけど。ただ、その当たり前の結論を、100%信じ切れる心理状態じゃなくなったってこと。
もうね、書きたくないんですよ。半年もかけて同じものを。Aperyをベースに何かするにしても、自分は気になった箇所(探索や手生成など)しか読んでないので、そのコード群を自分の手足のように扱えるようになるにはやはりものすごい時間がかかる。
今回のshogi686は、けっこう自信があった。最後のほうに作った評価関数と機械学習は汚くなってしまったけど、探索は(これも自覚しているだけでいくつも問題点があるんだけどそれでも)きれいに書けたからこれで色々遊べると思っていた。しかし、それがもはや頼れないとわかったのだ。
そういや並列化はしてないんだよな。Aperyをしっかり読んで、並列化に向いたデータ構造考えて書き直すか。ただ、今は別にやりたくない。そうなると、デッドロックしてしまう。何か実験するには探索を書き直す必要があり、書き直すには並列化という動機が必要であり、並列化はやりたい実験をやったあとにしたい。
もげ。これ寒さのせいだよねー。機械学習にはもってこいの季節なのに、それができない。残り少ない人生だけど、3か月くらい休んだってどうってこたないよな。