56将棋開発ブログ

5×6マスのミニ将棋、「56将棋」で遊べるものをいろいろ開発してます。

プチ将棋

3ヶ月ぶりにしれっと更新してみます。

去年から、Bonanzaを5×6マスの将棋盤に対応させる、ということをやってきました。

前回の更新で、コマンドプロンプト上で対局できるようにはなっていたのですが、
プチ将棋という将棋GUIで対局できるようにしてみました。

プチ将棋は、
「任意の大きさの盤面と開始局面で対局することのできる将棋GUIプログラム」です。

(リンク先より抜粋)

USIプロトコルに対応している思考エンジンを登録することで、
思考エンジンとの対局が可能です。

さらに、任意の大きさの盤面と開始局面に対応した、
sspという思考エンジンまで用意されています。
sspは、こちらのページの、「任意盤面、マルチプロトコル対応GUI プチ将棋」の
「インストール方法」からダウンロードできます。


ということで、Bonanza 56shogiとsspを対局させてみました。
(注 fv.bin不使用、評価関数は自作。
わたしの勉強のため、探索部分を簡略化してます)
持ち時間はなし、1手20秒です。

初期配置。

f:id:tetsuzuki1115:20150206203015p:plain

 

途中図。
f:id:tetsuzuki1115:20150206193441p:plain
Bonanza 56shogi、2枚の自陣角で受ける。


結果は144手(!)で、sspの勝ち。
f:id:tetsuzuki1115:20150206193902p:plain


せっかくなので、棋譜を貼っておきます。
プチ将棋にコピペすれば並べることができます。


開始日時:2015/01/23 9:45:34
先手:56bona
後手:ssp
後手の持駒:なし
5 4 3 2 1
+---------------+
|v飛v銀v玉v金v角|一
|v歩v歩v歩v歩v歩|二
| ・ ・ ・ ・ ・|三
| ・ ・ ・ ・ ・|四
| 歩 歩 歩 歩 歩|五
| 角 金 玉 銀 飛|六
+---------------+
先手の持駒:なし
*成り段=3
先手番
手数----指手---------消費時間--
1 3四歩(35) (00:20/00:00:20)
2 2三歩(22) (00:20/00:00:20)
3 1四歩(15) (00:20/00:00:40)
4 5三歩(52) (00:20/00:00:40)
5 4四歩(45) (00:20/00:01:00)
6 5四歩(53) (00:20/00:01:00)
7 5四歩(55) (00:20/00:01:20)
8 5四飛(51) (00:20/00:01:20)
9 3五銀(26) (00:20/00:01:40)
10 2二金(21) (00:20/00:01:40)
11 5五歩打 (00:21/00:02:01)
12 5三飛(54) (00:20/00:02:00)
13 4五角(56) (00:20/00:02:21)
14 5二飛(53) (00:20/00:02:20)
15 2六飛(16) (00:20/00:02:41)
16 3三歩(32) (00:20/00:02:40)
17 2四歩(25) (00:20/00:03:01)
18 3二銀(41) (00:20/00:03:00)
19 2三歩(24) (00:20/00:03:21)
20 2一金(22) (00:20/00:03:20)
21 2四銀(35) (00:20/00:03:41)
22 3四歩(33) (00:20/00:03:40)
23 3四角(45) (00:20/00:04:01)
24 5三飛(52) (00:20/00:04:00)
25 4五金(46) (00:20/00:04:21)
26 3三歩打 (00:20/00:04:20)
27 1六角(34) (00:20/00:04:41)
28 5一飛(53) (00:20/00:04:40)
29 4六玉(36) (00:20/00:05:01)
30 2二歩打 (00:20/00:05:00)
31 2二歩成(23) (00:20/00:05:21)
32 2二角(11) (00:20/00:05:20)
33 3四歩打 (00:20/00:05:41)
34 3四歩(33) (00:20/00:05:40)
35 2三歩打 (00:20/00:06:01)
36 3五歩成(34) (00:20/00:06:00)
37 3五銀(24) (00:20/00:06:21)
38 1一角(22) (00:20/00:06:20)
39 2四銀(35) (00:20/00:06:41)
40 3三歩打 (00:20/00:06:40)
41 5六玉(46) (00:20/00:07:01)
42 4一玉(31) (00:20/00:07:00)
43 4六玉(56) (00:20/00:07:21)
44 2二歩打 (00:20/00:07:20)
45 2二歩成(23) (00:20/00:07:41)
46 2二金(21) (00:20/00:07:40)
47 2三歩打 (00:20/00:08:01)
48 2一金(22) (00:20/00:08:00)
49 5六玉(46) (00:20/00:08:21)
50 3一玉(41) (00:20/00:08:20)
51 3六飛(26) (00:20/00:08:41)
52 5三飛(51) (00:20/00:08:40)
53 3五歩打 (00:20/00:09:01)
54 2二歩打 (00:20/00:09:00)
55 3四歩(35) (00:20/00:09:21)
56 3四歩(33) (00:20/00:09:20)
57 3四角(16) (00:20/00:09:41)
58 3三歩打 (00:20/00:09:40)
59 2二歩成(23) (00:20/00:10:01)
60 2二金(21) (00:20/00:10:00)
61 1六角(34) (00:20/00:10:21)
62 2三歩打 (00:19/00:10:19)
63 1五銀(24) (00:20/00:10:41)
64 2一金(22) (00:20/00:10:39)
65 2四歩打 (00:20/00:11:01)
66 2四歩(23) (00:20/00:10:59)
67 2四銀(15) (00:21/00:11:22)
68 2三歩打 (00:20/00:11:19)
69 3五銀(24) (00:20/00:11:42)
70 2二金(21) (00:20/00:11:39)
71 2四歩打 (00:20/00:12:02)
72 5一飛(53) (00:20/00:11:59)
73 2五角(16) (00:20/00:12:22)
74 2四歩(23) (00:20/00:12:19)
75 2四銀(35) (00:20/00:12:42)
76 4一玉(31) (00:20/00:12:39)
77 3五銀(24) (00:20/00:13:02)
78 2一金(22) (00:20/00:12:59)
79 3四歩打 (00:20/00:13:22)
80 3四歩(33) (00:20/00:13:19)
81 3四角(25) (00:20/00:13:42)
82 3三角(11) (00:20/00:13:39)
83 1六飛(36) (00:20/00:14:02)
84 2二角(33) (00:20/00:13:59)
85 2四銀(35) (00:20/00:14:22)
86 3三歩打 (00:20/00:14:19)
87 1三歩(14) (00:20/00:14:42)
88 1三歩(12) (00:20/00:14:39)
89 2五角(34) (00:20/00:15:02)
90 2三歩打 (00:20/00:14:59)
91 3五銀(24) (00:20/00:15:22)
92 3一玉(41) (00:20/00:15:19)
93 1四歩打 (00:20/00:15:42)
94 1四歩(13) (00:20/00:15:39)
95 1四飛(16) (00:20/00:16:02)
96 1二歩打 (00:20/00:15:59)
97 1五飛(14) (00:20/00:16:22)
98 1三角(22) (00:20/00:16:19)
99 3六角(25) (00:20/00:16:42)
100 3五角成(13) (00:20/00:16:39)
101 3五金(45) (00:20/00:17:02)
102 2六銀打 (00:20/00:16:59)
103 2五飛(15) (00:20/00:17:22)
104 3五銀成(26) (00:20/00:17:19)
105 3五飛(25) (00:20/00:17:42)
106 3四金打 (00:20/00:17:39)
107 1五飛(35) (00:20/00:18:02)
108 4四金(34) (00:20/00:17:59)
109 2六角打 (00:20/00:18:22)
110 4三銀(32) (00:20/00:18:19)
111 5四銀打 (00:20/00:18:42)
112 5四金(44) (00:20/00:18:39)
113 5四歩(55) (00:20/00:19:02)
114 4四銀打 (00:20/00:18:59)
115 4六玉(56) (00:20/00:19:22)
116 3四歩(33) (00:20/00:19:19)
117 2五金打 (00:20/00:19:42)
118 5五歩打 (00:20/00:19:39)
119 1六歩打 (00:20/00:20:02)
120 5六歩成(55) (00:20/00:19:59)
121 5六玉(46) (00:20/00:20:22)
122 5五歩打 (00:20/00:20:19)
123 4六玉(56) (00:20/00:20:42)
124 3三銀(44) (00:20/00:20:39)
125 5五玉(46) (00:20/00:21:02)
126 2四歩(23) (00:20/00:20:59)
127 1四金(25) (00:20/00:21:22)
128 3五歩成(34) (00:20/00:21:19)
129 3五角(26) (00:20/00:21:42)
130 2五歩成(24) (00:20/00:21:39)
131 2五角(36) (00:20/00:22:02)
132 5四飛(51) (00:20/00:21:59)
133 4五玉(55) (00:20/00:22:22)
134 4四銀(33) (00:20/00:22:19)
135 4四角(35) (00:20/00:22:42)
136 4四飛(54) (00:20/00:22:39)
137 3五玉(45) (00:20/00:23:02)
138 3四歩打 (00:20/00:22:59)
139 3六玉(35) (00:01/00:23:03)
140 5四角打 (00:01/00:23:00)
141 2六玉(36) (00:01/00:23:04)
142 4六飛成(44) (00:01/00:23:01)
143 3六銀打 (00:01/00:23:05)
144 3五歩成(34) (00:01/00:23:02)
145 投了
まで144手で後手の勝ち


他にも何局か指させてみたのですが、sspに全然勝てませんでした…。

探索部分をかなり簡略化しているので、評価関数はともかく探索部分だけでもBonanzaと同等にすれば、sspにはかなり勝つんじゃないかと思っているので、がんばります。

ちなみにこれを書いている現在、未実装の探索手法は、
・置換表
・Principal Variation Search (PVS)
・null move pruning
・futility pruning
・killer move
・extension、reduction
・multi PV
・並列処理

さらに1手詰、3手詰ルーチン、dfpnも未実装です。

未実装だらけです。ははは。(乾いた笑い)

「実装」というより、探索手法について理解して(ここが大事)、

そのままくっつけるだけなのですが。

 

おまけとして、探索について勉強する上で、参考になったものをいくつか。

Chess Programming Wiki
困ったらとりあえずここで検索。

CiNii 論文 -  3.コンピュータ将棋における全幅探索とfutility pruningの応用(<ミニ小特集>コンピュータ将棋の新しい動き)
Futility pruningについて解説されてます。擬似コードもあるのでわかりやすいです。

将棋:SEE - スズメレンダラー・クマ将棋の開発日記
SEE(static exchange evaluation)について。
リンク先の図がとてもわかりやすいです。


それでは。