進捗

sspに一発入れた。斬り合って駒得の流れが気持ちいい。
序盤が弱く、終盤がとてつもなく弱いので、中盤で全駒が唯一の勝ちパターン。
人間として対戦してみると、話にならないほど弱い。
序盤、食いつかれないように攻めの体勢を作って駒得すればそれで終わり。
一旦駒損してしまうと、糸を引かない納豆のように、もろい。
やれそうなことだけでも、まだ少しだけ強くなる余地はある。
適当にやってる王手処理の高速化。詰将棋。終盤を意識した評価関数。あと定跡。
ただ、今までやってなかっただけあって、かなり面倒。
評価関数は本当に大事だと思うので、機械学習はぜひやってみたい。
これについて、序盤は難しいながらも、妥当な正解が存在しそうに思うのだが、
終盤に何が正しいのか、通常の評価関数という枠組でもいいのかが、わからない。
例えば終盤にお互い受けに回ってゆっくりすれば、遠いと金の価値は高まる。
速度と駒得は次元が違う気がして、数値の比較で判断したいと思えない。
オーダリングも相当に改善の余地がある。
今は、手を逐次生成してKillerやHistoryを適当にやっているが、効果は薄い。
ここはしっかり考えて作るべきだと思うが、評価関数に依存するとも思うので、
ある程度まともな評価関数ができるまでは、やる気が起きない。
以前、飛車の不成を生成していたとき、なぜか飛車を成らないことがあった。
取り返されるわけでもなく、成ったほうが確実に評価値が高くなるのに。
そしたら、成る手を0.5手延長しているための水平線効果だった。
ほんとにちゃんと考えて書かないとダメだと思った。
プログラムは忠実。書いたとおりに動いてくれる。責任は自分にある。
つーかプログラムを変更するときに、複数箇所のコードをいじる必要があるとか論外。
作り始めた頃に思っていた、少ないコード量でという理想は持ち続けるべき。
最終的に高速化できるような形を保ちながらシンプルに推移させたい。
コードの汚さは指し手に現れると思う。
動作に必要なことや簡単にできることをやってしまったので、やや停滞気味。
ここらで少し休んでもいいかもしれない。