忍者ブログ
コンピュータ将棋など…。
[13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

まだ、大元に入れ込んでいないけど、ハッシュだと衝突があるのでハフマン符号化で実装してみました。
局面情報をハフマン符号化で256bitに変換して、それをキーにSTLのmapで実装してみたけど、1手当たり1msもかからず引けるようです。

4万局の棋譜かられさぴょん形式で定跡を作ると約20MBになりますが、1レコードキー32バイト+データ32バイトにしたので、250MB程度になりました。

棋譜の60手以降をデータから除外すると100MB弱。

これくらいなら512MBの XP マシンで動くかな…。

つーか、こんな外堀ばかり埋めていないで本丸を攻めねばっ。
あと2週間切ってるし…。
PR
連続対局ができるようになったので、ちょっと10連戦してみましたが、
・対 LesserKai 7勝3敗
・対 ssp 10連敗  
とかわいそうな強さです。。。

指し手のソート(れさぴょんでいうとKyokumenKomagumi::EvaluateTe()とその子関数)で70%以上の時間を使っているみたいで、指し手の逐次生成に変更してソートしないようにしたほうがいいのかなぁ~。
あるいは仮評価用に軽い評価関数を作るか。
いずれにしてもいまさら大幅変更はできないし、残り時間も限られているので、手っ取り早くできてそこそこ効果のあることをどんどん投入していかないと。
投了図090415
図は▲5四飛から詰むみたいですが、なんと、ここで投了?!
ハッシュに詰みが入っているのに手が入っていないようです。
実はこの2手前から詰んでいるので、詰み探索の途中で手を登録していないのかな??

処理時間はデータ量に比例するO(n)となっていることを実測で確認。
測定マシンは Phenom II X4(3.0GHz)でソフトはシングルスレッド。
4000~40000局登録した定跡データについての測定です。
収録データ数の増大および手数が進むごとに定跡ルーチンの処理に時間がかかることがわかります。

40000局登録データで120手目に定跡ルーチンを呼ぶと958msかかっています。
まぁ、れさぴょんみたいに常に定跡ルーチンをコールすると問題だけど、定跡から外れた後は定跡ルーチンを呼ばないようにすれば問題ないですね。
KI2形式の棋譜を読み込むときに、局面をいちいち更新していかないと「右」とか「左」とかついたときの移動元がわからないよなぁ~、ということで移動元が明示的に入っているcsa形式に変換するコンバータを作ってみた。
しかし、csa形式は指手の駒を「移動後の駒名」であらわすので、その手で成ったのか、以前から成っていたのかがやはり局面をいちいち更新していかないとわからない、ということに先ほど気づいた。orz

それなら csa 形式である必然性はないなぁ…。

コンバータの処理で一度KI2形式のファイルを読み込むので、コンバートせずにKI2のまま使えばよかった。
まぁ、読み込み処理は使えるけど。


忍者ブログ [PR]
カレンダー
04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
フリーエリア
なのはの応援をしていただき、かつ協力いただける方は、アマゾンでの買い物は下のリンクからお願いします
最新CM
[04/27 とおりすがり]
[10/21 おてだま]
[10/20 おてだま]
[01/24 なのはminiふぁん]
[01/08 sakura]
最新TB
プロフィール
HN:
かず
性別:
非公開
バーコード
ブログ内検索
最古記事
カウンター
アクセス解析