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

楽観的合議

そこで、文殊でも採用している楽観的合議を使ってみることにした。 これは、単純に各クライアントの最善手の中で最も評価が高い手を採用する方法。 たしかに楽観的すぎる気がするが、なんか良い気がしてきた。 でも、これも戦わせてみるが、強くなっているか…

重みの制約付き最適化

そこで、重みをGAで求める際に、最善手の重みが最も高くなるように制約をつけた。 すると、1クライアントでは38%くらいの一致率が40%くらいに若干増えた。 合議vs非合議で戦わせてみるが、強くなっているか弱くなっているか良く分からなかった。 あ…

次善手・次々善手の重み付き投票

最初に試したのが、最善手だけではなく、次善手、次々善手を求めて、それぞれに 重みをつけて投票するやりかた。重みは一致率が高くなるようにGAで最適化。 これで一致率が70%と驚愕の数値(バグかと思った。でも実はバグかもしれない)がでたので 喜ん…

【将棋】合議のテスト中

4つのクライアントで合議をやると弱くなっているようなので、まだfloodgateに投入していません。 いろいろな合議の方法を試しています。

【将棋】オーダリングメモ

忘れないうちにクマ将棋のオーダリング順序メモ。 以下の順序でオーダリング。具体的には手に点数をつけて、std::sortでまとめて並び替え。 逐次生成しておらず(ビットボードではないので難しい)、ソートに時間がかかりそうなので、 1番良い手と2番目に…

【将棋】合議の実装

合議の実装が大体終了。 並列探索を行うには、局面構造を変えないといけないし、 (今のクマ将棋は探索局面とハッシュをstaticに持っている) マルチスレッド処理の方法がよく分からし、 そもそも並列探索自体がとても大変そうなので 実装が簡単そうな合議に…

KPP評価部分

以下のようにして、listを作成した後、例のlist加算で評価できます。 (ボナンザのソースを見たことがある方はピンとくると思います) for(pos = 0;pos < 81;pos++) { koma = in.kifu[pos];// 駒種 switch(koma) { case KOMA_FU:// 先手 歩 // KKP加算 ret =…

三角テーブルから正方テーブルに変換

#define PcPcOnSq2(k,i,j) pc_on_sq2[k][i * fe_end + j] // KPPテーブルを三角テーブルから正方テーブルに変換 for(k = 0;k < 81;k++) { for(i = 0;i < fe_end;i++) { for(j = 0;j < fe_end;j++) { if(j <= i) { PcPcOnSq2(k, i, j) = PcPcOnSq(k, i, j); }…

【将棋】配列版でKPPを使う方法

ボナンザの3駒関係(KPP)を配列版で使う方法です。ビットボードで使う場合はボナンザのコードをそのまま使えば良かったのですが、 れさぴょんやsimkのような盤面を配列で管理している場合は、コードがそのまま使えないので苦労します。 というのは、オ…

いくつかブログに解説されていました。ありがとうございます。僕は将棋を指せないので情勢の判断がつかないのですが、 まったくのでたらめという訳でなく、 Sunfish戦では序盤で相手飛車が困っていたようです。 http://shingoozisann.blog48.fc2.com/blog-en…

オープン戦参加

第17回コンピュータ将棋オープン戦にクマ将棋で参加しました。 過去のオープン戦をみると、結構参加されていたので、今回参加しましたが、 SunfishとGPS将棋とクマ将棋の3つだけでした・・・ クマ将棋は学習途中のfv.binを使いました。 将棋所を使っての…

結果

これで、一応、矢倉ぽく組むようになりました。 あと、1万局より4万局で学習させた方が強くなった気がします。 floodgateにsimk_kpp_100で流していますが、当然ながら オリジナルfv.binを使ったバージョン(simk)よりもかなり弱いです。プロの棋譜だけでは…

ボナンザのコンパイル&実行

gcc+linux環境では以下のようにしたら動きました。 >gcc *.c -c -O3 >rm learn1.o >gcc learn1.c *.o -O3 -lm -lpthread >./a.out ボナンザのコマンドラインが立ち上がるので、6コアマシンの場合は >learn ini 32 -1 -1 6 6 とすれば6並列で学習が始ります…

学習データ

学習にはrecords.csaというcsa形式のデータが必要です。これを準備します。 ボナンザはプロ棋譜3万+将棋クラブ3万(24万局のデータは6000円くらいで売っている模様) のデータを学習させたらしいけど、手元にないので、2chkifu.csaというもので学習…

shogi.hの変更

まず、shogi.hに以下を追加。 #define TLP #define NDEBUG #define exam_bb(a) a TLPを定義すると、学習時にマルチスレッドで並列処理できるようです。 あと、NDEBUGを定義しないと、学習時にassertに引っかかったので。 exam_bbは局面に間違いがないかチェ…

simk_kkp

評価関数の学習を始めています。とりあえず、理解と動作確認のため ボナンザを使って学習して、どれくらい強くなるか試しています。 オリジナルのfv.binを超えるのは無理だろうけど、R2000行きたいところ。ボナンザを使って学習する方法のメモです。 もっと…

世界コンピュータ将棋選手権

クマ将棋で出場します。初参加です。よろしくお願いします。 現在、floodgateでsimkというIDで参加しています。レートは2000くらい。 simk_0は駒割のみのバージョンでレートは1500くらいです。 内容は非ビットボード、並列化なし、詰めルーチンなし(長手…