2012-03-01から1ヶ月間の記事一覧

g++のコメント文

to = attack_koma[player][type][pos].pos[i]; // 移動先が自分の駒でなければ移動可能 if(in->kifu[to] <= 0) { ..... というプログラムがあって、VC++だとちゃんと動作するけど g++で実行すると、in->kifu[to] 必ずif文を実行してしまう現象が起きていた。…

静止探索の安定性

http://wdoor.c.u-tokyo.ac.jp/shogi/view/2012/03/28/wdoor+floodgate-900-0+Kakinoki-Test+simk_test+20120328173007.csa/89 9 8 7 6 5 4 3 2 1 P1-KY * * * * -KI * -KE-KY P2 * * * * -KI * -GI+KA-OU P3 * * * * -FU-FU-FU+FU * P4-FU+NG * * -KE * +GI…

simk_test

simk_10000_prでいくつかバグが見つかったので直して、 オリジナルfv.binで再度投入したバージョンです。 これでも終盤に急に負けるケースが多発していたので おかしいと思って調べたら、王手回避手の生成にバグがあった。なんてことだ・・・ あと、ボナンザ…

simk_10000_pr

10000局で学習させたバージョンをfloodgateに投入中。 一回のイタレーションに8時間ほどかかっている。 更新したら随時プログラムに反映されている。 じわじわと強くなっているようで現在はR1900くらい。 ただし、自玉の安全評価が甘いようで、途中まで優勢…

simk_1000_p

1000局で学習したバージョンをfloodgateに投入しています。 3駒関係+玉の周囲の駒特徴を入れています。学習した駒割は以下。 歩 96 香 286 桂 278 銀 385 金 496 角 569 飛 692 と 464 成香 520 成桂 483 成銀 484 馬 748 龍 899 そんなに変な値にはなって…

駒割の学習

作ったルーチンで、テストで1000局面の学習を行ってみた。 歩を100に固定。以下は結果。 歩=100 香=156 桂=135 銀=176 金=253 角=283 飛=316 と=360 成香=269 成桂=260 成銀=231 馬=393 龍=459「と」が大きいが気になるが、なんとなく、あっていそう…

ペナルティ

微分値が小さな特徴値はゼロの方向に向かうように更新している。 頻度が少ない特徴値は微分値が小さくなる傾向にあり、 頻度が少ない特徴量は信頼できないものと見なすことになる。

KPPの対称性

KPP=[王][駒1][駒2]の対称性は2種類ある。 一つは、駒1と駒2の対称性で、[王][駒1][駒2]=[王][駒2][駒1]。 この対称性でメモリを半分にできる。もうひとつは、左右対称性。9九玉と1九玉の評価値は同じにしている。 これは右玉と左玉の区別がつかなくなる…

ボナンザメソッドあれこれ

並列学習ルーチンができたので学習中。 探索の並列化は大変だけど、学習の並列化は割と簡単にできた。 これにて脱ボナンザライブラリは達成できそう。 オリジナルのfv.binを超えるものは作れそうにないですが、 今のままだと、クマ将棋は何も特徴がないので …

なんちゃってレーティング計算

例えば、A〜Dの4人の勝率マトリクスが以下のようになっていたときに、 A B C D AのB,C,Dへの勝率 0.50 0.10 0.90 0.99 B 0.90 0.50 0.80 0.99 C 0.10 0.20 0.50 0.99 D 0.01 0.01 0.01 0.50 このようなレーティングを計算するコードです(A=2150で固定と…

KPPの差分評価メモ

3駒関係(KPP:[王][駒1][駒2])の計算部分は簡単に書くと以下のようになる。 for ( i = 0; i < nlist; i++ ) { for ( j = 0; j <= i; j++ ) { sum += PcPcOnSq(sq_bk0, list[i], list[j]); } } listに駒種+駒位置情報を入れて2重ループを回す。 KPPの対称…

合議考察

色々と改良をしていますが、なかなか強くならないようです。 強くなっているかもしれないけど、自己対戦だと分からないのかもしれない。 合議の各クライアントの指手を見ているけど、 ほとんどの場合、同じ手を指すことが多い。 合議なので、価値観が異なる…

bonanza6.0でプロファイル取ってみた

局面評価と差分評価の比重が大きい。SEE(swap)やattacks_to_pieceは、simkに比べて小さい。 ビットボードにしないと駄目かもしれない。ただ、そうするとますます、ただのボナンザになってしまう。

解析結果

こんな感じでした。evaluate_pos2という局面評価部分が重いのは仕方がないとして、 get_attack_to_pos_allとseeにかなり重いのが気になる。get_attack_to_pos_allは、あるマスへの利きを持つ駒を全て調べる関数で seeの計算に使っている。要するに、seeがか…

プロファイル解析

プログラムのボトルネックを探すために、以前に一度プロファイル解析を vs_profiler_x86.exeというものを使ってやったけど、コマンドラインで出力結果もテキストファイルで すごく面倒という印象があったのですが、 AMD CodeAnalyst Performance Analyzer ht…