BITBOARD完成しました!
苦闘の連続でようやくbitboard完成しました。
結局、R45、L45のrotatedBitboardは使ってません。
R45、L45のDiaAttacksの表自体は持ってますが、
考えてみたら、手を打つ、戻すたびに、普通のbitboardとrotatedBitboardを合わせて更新するのも
ムダと思いますので、独自のやり方でノーマルbitboardだけで処理するようにしました。
おそらく速度低下もあまり無いかと思います(比較してないので解りませんが)
まずは、generateCaptureをbitboard化しましたが、
AMDのCodeAnalystで見る限り3倍ぐらいは速くなってるようです。
もともと駒背番号も使ってなかったので無駄が多かったので、Bitboardだから速いとは言えませんが、
苦労が報われたので良かったです(゚Д゚ )ウマー
ただ、npsはあまり変わりませんね(^^; 自己対戦ではbitboardが勝ち越すので高速化のメリットは出てると思います。
通常の手生成とbitboard手生成の結果を比較してバグつぶしをしました。
次は、SEEや、王の1手詰、王の利きの検出などをbitboard化したいと思います。
静止探索の手生成makeAttackMovesが900ぐらいあったのが、bitboard化でgenerateMovesが57と
すごい速くなってました(^^; というか今までが遅すぎたと……
でも手を打つ処理が遅くなってるような……。割合が増えただけかな?
eval 2893 isMate 1112 gainMinMax 1039 makeAttackMoves 913 move0 379 undo0 249 ReOrder 247 full_search 204 makeMoves02 135 makeMoves0 113 vdiff 71 ↓ eval 2220 isMate 1246 gainMinMax 839 move0 646 undo0 604 ReOrder 358 getKiki 264 full_search 213 makeMoves0 194 makeMoves02 178 SET 170 scan 106 generateMoves 57
将棋じゃなくてオセロですが、
プログラム技術板のbitboardのスレが凄いですね(^^;
なんだかライフゲームみたい(w
http://www9.atwiki.jp/othello/pages/48.html