忍者ブログ

ぐれーすけーるブログ

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

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

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



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

[PR]

×

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

【将棋】きふわらべが頂上を目指す☆!第3回将棋電王トーナメント(8) 2駒関係のevaluate(~)をちょっとずつ用意するんだぜ☆


「おうふ☆」





「よしよし☆ プログラム用語で言うところの スタブ を開発中だぜ☆

あとで 2駒関係 を入れるために、 作りかけの2駒ランダム箱 を使って
動かしているんだぜ☆」



(1)駒割     まだ

(2)KK     盤上の駒のみランダム箱ok、持ち駒まだ

(3)自玉側KP  盤上の駒のみランダム箱ok、持ち駒まだ

(4)敵玉側KP  まだ

(5)PP     盤上の駒のみランダム箱ok、持ち駒まだ




「という感じだぜ☆」







拍手[0回]

PR

【将棋】きふわらべが頂上を目指す☆!第3回将棋電王トーナメント(7) ボナンザメソッドを読んで勉強したので、2駒関係の機械学習をがんばって作ろうなんだぜ☆

2015-08-02 07:02

「つい さっき書いた1つ前の記事の通り、
 もうそろそろ 機械学習に着手してもいいと思うんだぜ☆

 きふわらべの開発に着手したのが、このブログの去年の8月1日頃だから、
 丸1年だぜ☆」


「さ、早く作れ☆」


「まー、ぼちぼち だな☆
 まずは 2駒関係のフューチャーベクターの入れ物を用意して、
 中身を てきとー なランダム値にしておいて、
 評価値に変換する evaluate(~)  メソッドを作ることにするか☆

 きふわらべは 100円の メロンパンでも食べてろ☆」






「2駒関係について説明するぜ☆
これは 次の3つのものを まとめたものなんだぜ☆」

(1)KK
(2)KP
(3)PP

KK


「さらに説明しよう☆ K とは King。王様のことだぜ☆
 KK というのは、自玉と敵玉のことだぜ☆」

↓自玉 敵玉→ 1一 1二 1三 9九
1一 ー10
1二
1三 10
9九 100 150 200


「といった感じで、将棋盤は81マスあるので、
 縦に81項目、横に81項目、合計6561マスの表があるとするぜ☆

 自玉が 9九 にいて、敵玉が 1一 にいるとき、
 評価値は +100点 にしとくか☆

 といった感じの この表を KK と呼ぶんだぜ☆」


「居玉よりは 2筋や 8筋に行った方が強そうだし、
入玉の方が強そうだな☆」



「まあ、それだと 1駒 だな☆
 2駒関係だと 相手の王様と 比較できるので、

 相手の王様が 1筋にいて、 自玉が 8筋にいると、
 相手の王様の方が深いところにいるので、
 点数がちょっと下がる、みたいな数字ができるのかもしれないし、
 そうでないかもしれない☆」



2015-08-02 07:33

KP



「次は KP について説明しよう☆ P とは Piece の略で、
 種類という意味があるんだぜ☆」


「将棋の駒は、14種類あるんだぜ☆」

( 1)歩
( 2)香
( 3)桂
( 4)銀
( 5)金
( 6)玉
( 7)角
( 8)飛
( 9)と金
(10)成香
(11)成桂
(12)成銀
(13)馬
(14)竜

「そして 持ち駒の種類は 7種類なんだぜ☆」

(1)歩
(2)香
(3)桂
(4)銀
(5)金
(6)角
(7)飛


「王様は K に入っているので、P からは減らすとしよう☆
 そして、成っている駒は、成っていないものとして扱うとするぜ☆

 将棋盤には81マスあって、持ち駒には枚数があるな☆
 これを加味して もう一度 一覧するぜ☆」

( 1)歩  ×81マス
( 2)香  ×81マス
( 3)桂  ×81マス
( 4)銀  ×81マス
( 5)金  ×81マス
( 6)玉  ーーーーー
( 7)角  ×81マス
( 8)飛  ×81マス
( 9)と金 ーーーーー
(10)成香 ーーーーー
(11)成桂 ーーーーー
(12)成銀 ーーーーー
(13)馬  ーーーーー
(14)竜  ーーーーー

(1)歩 0枚~18枚(計19パターン)
(2)香 0枚~4枚 (計 5パターン)
(3)桂 0枚~4枚 (計 5パターン) 
(4)銀 0枚~4枚 (計 5パターン)
(5)金 0枚~4枚 (計 5パターン)
(6)角 0枚~2枚 (計 3パターン)
(7)飛 0枚~2枚 (計 3パターン)


「盤上の駒は マスが、 持ち駒は 枚数が、 P となるんだぜ☆
 全部で何パターンあるか足し算してみるぜ☆

 駒は 先後 に分けられるから、最後に2倍するぜ☆」

 (81 × 7 + 19 + 5+5+5+5 + 3+3)×2 = 1224


「P は、 1224 パターンだな☆」



「成銀を、銀と同じに扱っていいのかなんだぜ☆?」


「ボナンザ6.0では、3駒関係の他に、駒の価値 というのを持っていて、
 三駒関係より 32倍ぐらい敏感に評価値の学習のときに 動いているように見えたぜ☆

 成銀を持っていれば、 駒の価値 の方で得点が高くつくはず☆
 自陣に成銀がいることはまずないし、ざっくり計算 でOKということなんじゃないか☆?」




↓自玉 P→ 1 2 3 1224
1一 100 500 900 400
1二 200 600 100 500
1三 300 700 200 600
9九 400 800 300 700
数字は適当だぜ☆


「表の縦列が81個、 横列が1224個なので、
 KP表の マスの数は 99144個だな☆」




08:23

PP


「最後が PP だぜ☆ 1224×1224 なので、
 PP表の マスの数は 1498176 だな☆ww」



「KK、KP、PP は全部で 1598544 パターンあるわけなのかだぜ☆」



駒の価値


「一応、駒の価値も見ておくかだぜ☆
 ボナンザ6.0の param.h に書いてあるんだぜ☆
 このファイルは、機械学習をしている最中に書き換えられるぜ☆」




「Proって書いてるのが プロモーションの略で、成りのことだな☆
 Silverが銀で369点、ProSilverが成銀で495点☆ 126点ぐらい違うな☆」



08:39

「局面を見て、駒の位置や 持ち駒の数を見て、自駒の価値を計算すれば
 評価値が分かるな☆

 おっおっ☆ evaluate.c ファイルのソースコードも読んでおくか☆
 これまた 1日ぐらいかかるかも知れないな☆」



11:56


「KKは簡単だな☆ 自玉と、敵玉のマス番号を調べるだけだぜ☆
 KPも、Kは簡単だな☆ もう片方の P なんだが、
 K以外の駒は盤上に最大38枚あるな☆
 持ち駒も 7種類 × 先後の2 だぜ☆」



2015-08-03 06:01


「日付が ちょっと飛ぶんだが、きふわらべのソースコードを整理していたんだぜ☆」



「次のように、本に見立てて、プログラムにページ番号を振るイメージで整理してみたぜ☆」




「整理整頓はもうちょっと続くぜ☆」

拍手[0回]

【将棋】きふわらべが頂上を目指す☆!第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回]

目指せ☆!同ソ・アフィリエイト(33) WordPressで、HTMLのテーブルを表示したいんだが☆ww


「Word Press の表作成機能じゃ 足りないんだぜ☆
表を作成するプラグインは何がいいんだぜ☆?」

『WordPressでテーブル・表を作成するプラグイン9個まとめ』
http://webshufu.com/how-to-make-responsive-tables-in-wordpress/




「Table Press が良さそうなんだが、テーブルヘッダーを複数行にしてセル結合できるだろうか☆??調べるんだぜ~☆!」



「おっ☆ できそうなんだぜ☆?」

WordPressのアフィリエイトで稼ぐ人生を始める-サトシ 『TablePressでWordPressにテーブル(表)を作成!セルを結合する方法も』
http://netbiz-life.com/archives/1693






「う☆! ジャパニーズ表組みには対応していないのかなんだぜ☆!?」





「1行目を使わなければ、セル結合はできるみたいだぜ☆
わたしのストレスがマッハ☆」




拍手[0回]

【将棋】きふわらべが頂上を目指す☆!第3回将棋電王トーナメント(5) 設定ファイルを1つに☆!

2015-07-23 23:10

「きふわらべの設定ファイルがぐちゃぐちゃなんだぜ☆! 整理だぜ~~~☆!」




「プロジェクトのフォルダーの中には、参照している .dll も 実体が入っているんだが、
.dll を、リンクで済ませる方法は無いのかなんだぜ☆?
ファイルがいっぱいで嫌なんだぜ~☆」




「これが怪しいんだが、 False にすると何が起こるんだぜ☆?

もしかして、リリースしたときに、参照のパスが全部切れるなんてことはないのか☆?」





「やってみたらバグったぜ☆」






「ソリューション・ファイル(.sln)の数を減らしてみたんだぜ☆」




整理が 進んだ な☆ww

微速微進、遅々前進だぜ☆ww

拍手[0回]

ブログ内検索

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