忍者ブログ

ぐれーすけーるブログ

ゲームプログラミングを独習中なんだぜ☆

↑同人活動☆w
ホームページ☆
『きふわらべ』のダウンロード
は、ホームページへ飛ぶ↑☆

ぐれーすけーる は、ゲーム86パーセントでお送りするんだぜ☆↑押すと最新記事に飛ぶぜ☆



第25回世界コンピュータ将棋選手権1日目に
初出場した『きふわらべ』の記事はこちら↑☆
↑東方二次創作音楽
CD78サークル分買った
積みゲー1本ずつ1ステージだけ
遊んでいく記事は別ブログへ飛ぶ↑☆
秋葉原裏通りの潰れそうなオリジナル同人
ソフト店『さんげっと』の記事はこちら☆

[PR]

×

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

コメント

現在、新しいコメントを受け付けない設定になっています。

【将棋】きふわらべが頂上を目指す☆!第3回将棋電王トーナメント(6) ボナンザ6.0のソースコードを読んでいるんだぜ☆ csa.c 編☆

2015-08-01 16:52


「ここ最近、コンピューター将棋エンジン『きふわらべ』のソースコードには ほとんど手を付けずに、ボナンザ6.0のソースコードを読んでいるだけなんだぜ☆」


「早く読み終われ☆」


「日記が止まってしまうので、ボナンザ6.0のソースコードの読んでいるところも
日記に認(したた)めておくぜ☆」


「7/31~8/01 と、csa.c を読んでいるぜ☆
 これも いつ読み終わるか分からないぜ☆」


「ちなみに、これより前には、
learn1.c を読み終わったあとに、 learn2.c を読み終わっている☆

それ以外のソースコードは 特に今年は 読み深めてはいないぜ☆」



「ちょうど去年あたり、将棋エンジンを作ろうか作るまいか考え中だったな☆」


「おっ、1歳になったな☆wwwwwwwwwwwwww 誕生日おめでとうなんだぜ☆」


「プレゼントをくれ☆」


「なるべく 第3回電王トーナメントまでに 2駒関係+機械学習を付ける予定なので
それまで待ってくれ☆wwwww」


「これまでの実績から、ランダム2駒関係に落ち着きそうなんだぜ☆」




2015-08-01 22:35


「ボナンザ6.0の csa.c のソースコードを読み終わったぜ☆
今日は17時~22時の7時間、昨日も何時間か読んでいたので、
丸1日は 潰れたんだぜ☆」


「読んだ内容を 少しまとめてみるぜ☆」




read ファイル名




「コマンド『read』を打鍵すると、棋譜を読むみたいなんだぜ☆」


勉強する順番1: read_record(~)





「moves が 0 だと .csaのヘッダーだけ読むみたいだな☆
それ以外だと .csaの内容を全部 読み込むらしい。
なんのことだかは 分からない☆」


勉強する順番2: in_CSA(~)

勉強する順番2: in_CSA_header(~)


「in_CSAで、.csa の内容を全部読み込むみたいだぜ☆
in_CSA_headerは、.csaのヘッダーだけを読み込むみたいだな☆

in_CSAの中には、in_CSA_headerが入っているぜ☆」


「ヘッダーというから、見出しの部分かな、と思っていたんだが、
読んでみると、ほとんど対局内容に関わる本文なんだぜ☆」





概念図
 ファイル名.csa
  1局の棋譜データ
  /
  1局の棋譜データ
  /
  1局の棋譜データ





「棋譜データが入っている .csa ファイルは、
 上図のように / 記号で、1対局、1対局が区切られているんだぜ☆

 in_CSA(~) は 1対局の棋譜データ分だけを読むんだぜ☆
 read_record(~) は、.csaファイルを 丸ごと どかどか 読んでくれるんだぜ☆」


勉強する順番3: read_CSA_line(~)


「これは、.csaの1行を読み取ってくれるぜ☆
 コメントと、末尾のスペースは削り取ってくれると思うぜ☆」




「.csa ファイルの中を簡単に説明するんだぜ☆
次のウェブサイトに、参考となるサンプルがあるぜ☆」

コンピュータ将棋協会 『CSA標準棋譜ファイル形式』
http://www.computer-shogi.org/protocol/record_v21.html

'----------棋譜ファイルの例"example.csa"-----------------
'バージョン
V2
'対局者名
N+NAKAHARA
N-YONENAGA
'棋譜情報
'棋戦名
$EVENT:13th World Computer Shogi Championship
'対局場所
$SITE:KAZUSA ARC
'開始日時
$START_TIME:2003/05/03 10:30:00
'終了日時
$END_TIME:2003/05/03 11:11:05
'持ち時間:25分、切れ負け
$TIME_LIMIT:00:25+00
'戦型:矢倉
$OPENING:YAGURA
'平手の局面
P1-KY-KE-GI-KI-OU-KI-GI-KE-KY
P2 * -HI *  *  *  *  * -KA *
P3-FU-FU-FU-FU-FU-FU-FU-FU-FU
P4 *  *  *  *  *  *  *  *  *
P5 *  *  *  *  *  *  *  *  *
P6 *  *  *  *  *  *  *  *  *
P7+FU+FU+FU+FU+FU+FU+FU+FU+FU
P8 * +KA *  *  *  *  * +HI *
P9+KY+KE+GI+KI+OU+KI+GI+KE+KY
'先手番
+
'指し手と消費時間
+2726FU
T12
-3334FU
T6
%CHUDAN


「このデータは、行先頭の1文字を見ると、その行の種類が分かるんだぜ☆
 では、最初の1文字を ピックアップしてみるぜ☆」

 ----------棋譜ファイルの例"example.csa"-----------------
 バージョン
 2
 対局者名
 +NAKAHARA
 -YONENAGA
 棋譜情報
 棋戦名
 EVENT:13th World Computer Shogi Championship
 対局場所
 SITE:KAZUSA ARC
 開始日時
 START_TIME:2003/05/03 10:30:00
 終了日時
 END_TIME:2003/05/03 11:11:05
 持ち時間:25分、切れ負け
 TIME_LIMIT:00:25+00
 戦型:矢倉
 OPENING:YAGURA
 平手の局面
 1-KY-KE-GI-KI-OU-KI-GI-KE-KY
 2 * -HI *  *  *  *  * -KA *
 3-FU-FU-FU-FU-FU-FU-FU-FU-FU
 4 *  *  *  *  *  *  *  *  *
 5 *  *  *  *  *  *  *  *  *
 6 *  *  *  *  *  *  *  *  *
 7+FU+FU+FU+FU+FU+FU+FU+FU+FU
 8 * +KA *  *  *  *  * +HI *
 9+KY+KE+GI+KI+OU+KI+GI+KE+KY
 先手番

 指し手と消費時間
 2726FU
 12
 3334FU
 6
 CHUDAN



「頭が『』の行は コメントなので、まず 無視してみよう☆」

 2
 +NAKAHARA
 -YONENAGA
 EVENT:13th World Computer Shogi Championship
 SITE:KAZUSA ARC
 START_TIME:2003/05/03 10:30:00
 END_TIME:2003/05/03 11:11:05
 TIME_LIMIT:00:25+00
 OPENING:YAGURA
 1-KY-KE-GI-KI-OU-KI-GI-KE-KY
 2 * -HI *  *  *  *  * -KA *
 3-FU-FU-FU-FU-FU-FU-FU-FU-FU
 4 *  *  *  *  *  *  *  *  *
 5 *  *  *  *  *  *  *  *  *
 6 *  *  *  *  *  *  *  *  *
 7+FU+FU+FU+FU+FU+FU+FU+FU+FU
 8 * +KA *  *  *  *  * +HI *
 9+KY+KE+GI+KI+OU+KI+GI+KE+KY

 2726FU
 12
 3334FU
 6
 CHUDAN


「おっおっ☆! 『VN$P±T±T±%』の順にならんでいるな☆
見えてきたんじゃないか☆ww」



「ここで、ボナンザ6.0では、『VN$P±』までを CSAヘッダー と
独自に名付けている☆
残りの『T±T±%』の部分は、ヘッダーの後に解析している☆

ボナンザ6.0は『』も『±』も無視して、『』だけ見てるようだが☆ww」



「ま☆ どっちにしろ両方使うわたしには そんな区別なんて
どうでもいいんだぜ☆wwwww」




「次に、 .csa の棋譜では、盤面の書き方が 3通りあるんだぜ☆
ボナンザでは それぞれ rep1、rep2、rep3 と呼んでいる☆
次に説明していくんだぜ☆」

(rep1)平手初期配置と駒落ち

PI  82HI  22KA


「先頭の2文字が 『PI』 だった場合だぜ☆
 実際には隙間なく1行に書かれているが、平手初期配置から落ちている駒を
 4桁で全部並べていくんだぜ☆
 82HI は 8二飛 を落とすんだぜ☆」


(rep2)一括表現

P1  -KY  -KE  -GI  -KI  -OU  -KI  -GI  -KE  -KY
P2    *   -HI    *    *    *    *    *   -KA   *

P9  略

「先頭の2文字が 『P数字』 だった場合だぜ☆
 実際には1行には隙間がなく、P1~P9の9行分書かれているわけだが、
 1マスを3文字で書くものとし、ーを後手、+を先手として 駒を書くんだぜ☆
 3文字目の1文字を空白にすると、空マス扱いになるぜ☆」

(rep3)駒別単独表現

P-  22KA
P+  99KY  89KE
P+  00KI  00FU
P-  00AL


「先頭の2文字が 『P±』 だった場合だぜ☆
 実際には1行には隙間がない。
 駒1個ずつ書く場合だぜ☆ まず P-、P+ で分けて、盤上の駒を書くんだぜ☆
 次のP+、P-は持ち駒だぜ☆ 持ち駒の場所は 00 だぜ☆
 最後の 『00AL』だけが特殊で、残りの駒を持ち駒にする という意味になるぜ☆

 王様は持ち駒にできないみたいだな☆ww」


「よくがんばって実装したな☆wwww」



2015-08-02 01:18


「日付が変わっていた☆」


「ドンマイ☆ アフィリエイターには時間はたっぷりあるだろ☆」



「.csa ファイルを解析した結果は、shogi.h にも定義されている min_posi_t 構造体の
 かたちで データとして持たれるんだぜ☆

 ボナンザは ビット演算を利用しているので、
 ビット演算の知識を知らずに ソースコードを見ても
 ぱっと見、意味が分からなくて困るぜ☆」



「例えば、hand_black という変数には 0~65535 の範囲の数字が
 1つ入っているんだが、
 どうも、先手の持ち駒の全パターンが これ1つで表現されているみたいなんだぜ☆

 こんなん、びっくりするんだぜ☆」


2015-08-02 01:56


「ボナンザ6.0では、.csaファイルで『/』が出ていた後にも何か タイム 関係の処理をしているみたいなんだが、なんで 1局目と それ以降の局で違いがあるのか わからないぜ☆

でもこれで、.csa ファイルの解析はできそうなんだぜ☆」


勉強の進展 あり なんだぜ☆
微速微進、遅々前進なんだぜ☆



2015-08-02 06:41




「.csa棋譜のパーサーを作ったぜ☆ 最低限動くところだけ☆」


「もうできたのか☆」


「ここから、きふわらべの指し手生成ルーチンと合流して、
 教師の指した手を良し、指さなかった手を悪し、と
 フィーチャーベクターの配列の内容を いじっていけば、
 機械学習はできるはずなんだぜ☆」


「もうすぐそうだな☆」


「いや、きふわらべの指し手生成ルーチンは どっちらかっているから整理が必要だし、
 ラーニング部分のソースコードもまだ書いていないんだぜ☆」


「書け☆」


「おっお☆ おっ、おっ、おっ☆」

実装の進展 あり なんだぜ☆
微速微進、遅々前進なんだぜ☆








拍手[0回]

PR

コメント

お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字

ブログ内検索

PR



絶版・品切れ本を皆さまからの投票で復刊させる読者参加型のリクエストサイト
復刊ドットコム

ネイフィールウォーター

応援フリーエリア

デジゲー博
むずでょは、第1回から毎年 出展しているんだぜ☆

ウサギのように新品入荷☆
カメのようにまだ置いてある既刊☆

同人ソフト一押し店 さんげっと
むずでょは、さんげっと を応援しているんだぜ☆

TVアニメ「Charlotte(シャーロット)」公式サイト
ニコ生の Angel Beats! 一挙放送が 面白かったので次のも応援するぜ☆ww

プロフィール

HN:
むずでょ
性別:
非公開

最新コメント

[01/02 Free Tax Marlboro Gold Regular Cigarettes Coupons 3 Cartons]
[12/30 Hot Selling Newport Regular Cigarettes Outlet 160 Cartons]
[12/29 http://www.patersonlabs.com/Marlboro/41.html]
[12/29 http://xz84.com/Marlboro/16.html]
[12/29 http://www.paragoninks.co.uk/Marlboro/93.html]

P R