カテゴリー別アーカイブ: 将棋

さくさく将棋>3手読み vs 5手読み

先手:5手読み(ランダムネス:10)
後手:3手読み(ランダムネス:10)
対局回数:100
先手勝ち:45
後手勝ち:25
引き分け:30
終局までの平均手数:19.46

先手:3手読み(ランダムネス:10)
後手:5手読み(ランダムネス:10)
対局回数:100
先手勝ち:52
後手勝ち:44
引き分け:4
終局までの平均手数:22.14

さくさく将棋>ランダム vs 3手読み

先手:ランダム
後手:3手読み(ランダムネス:100)
対局回数:100
先手勝ち:15
後手勝ち:81
引き分け:4
終局までの平均手数:17.17

先手:3手読み(ランダムネス:100)
後手:ランダム
対局回数:100
先手勝ち:79
後手勝ち:19
引き分け:2
終局までの平均手数:15.67

先手:ランダム
後手:3手読み(ランダムネス:10)
対局回数:100
先手勝ち:19
後手勝ち:80
引き分け:1
終局までの平均手数:14.67

先手:3手読み(ランダムネス:10)
後手:ランダム
対局回数:100
先手勝ち:92
後手勝ち:7
引き分け:1
終局までの平均手数:15.66

さくさく将棋解析

ランダム対ランダムで1,000対局してみた。
結果は以下のとおり。

先手勝ち:510
後手勝ち:481
引き分け:9
平均着手可能数:6.88
終局までの平均手数:53.348

分岐数を7,手数を50とすれば、末端ノード数は 7^50 = 1.798*10^42 となる。
ランダムなので、平均手数は長めに、引き分け率は少なめになっていると推測される。

ランダムネスを多く含む評価関数で、3手読みどうしの対局の場合:

先手勝ち:493
後手勝ち:488
引き分け:19
平均着手可能数:8.800
終局までの平均手数:32.245

先手勝率はほとんど変化ないが、引き分け率が倍増した。
平均可能着手数は約2増え、終局までの平均手数は約4割減少した。

ランダムネスを多く含む評価関数で、5手読みどうしの対局の場合:

先手勝ち:491
後手勝ち:410
引き分け:99
平均着手可能数:9.121
終局までの平均手数:35.84

先手勝率はほとんど変化ないが、引き分け率がさらに増え、後手勝率が下がった。
完全プレイヤーであれば後手必勝のはずなのに、不思議だ。
平均可能着手数え、終局までの平均手数はほとんど変化なし

【自分用メモ】とうぶつしょうぎ > KKM テーブル

次にKKM(※ M は持ち駒を表す)
KKP 同様に、KK 分の場合の数は 6*7 = 42。

持ち駒は6種類で、値は 0~2 なので、short KKM[6][7][6*3]; で充分。
が、よく考えると、持ち駒の歩が無いのと持ち駒の角が無いのを重複して評価する必要は無いので、
持ち駒数が 1, 2 の場合のみテーブル化し、持ち駒数0 は KK だけで共通化するとよい。

short KK[6][7];
short KKM[6][7][6*2];

要素数は 42*(12+1) = 546 となる。

【自分用メモ】とうぶつしょうぎ > KKP テーブル

先手玉位置を k1, 後手玉位置を k2, 玉以外の盤上の駒タイプ・位置の識別番号を p とするとき、
short KKP[12][12][12*8]; を作っておけば、KKP[k1][k2][p] で評価値を計算できる。
要素数は 12*12*12*8 = 13,824 だ。
先手玉位置が盤面の右側にある場合は左右反転すれば、先手玉位置の場合の数は 8 に減る。
さらに、評価関数は先手番で呼ばれるため、先手玉が相手陣地に入っている場合は既に終局となっていて、
評価関数が呼ばれることは無い。したがって、先手玉位置の場合の数は 6 にな。
同様に、後手玉位置も9に減る。
先手・後手玉が隣接している場合、相手玉を取って終局となるので、これも評価関数で評価する必要は無い。
ただし、テーブルとしては最大数を用意しておく必要があるので、後手玉位置の場合の数は7になる。
玉以外の盤上の駒については、双方の玉位置には配置できないので、その分場合の数が減り、10*8 = 80 となる。

よって、KKP 配列は short KKP[6][7][80]; と宣言でき、要素数は 3,360 となる。
最初の要素数の約3分の1だ。