第19回世界コンピュータ将棋選手権の結果

選手権全体の結果はこちら

エントリ

開発者 プログラム名 使用マシン(CPU等) 使用言語
山田泰広 山田将棋(Version 3.00) PC/AT互換機(Core i7 920, 2.66GHz) C

1次予選(エントリ24チーム/上位9チームが2次予選へ進出)

1回戦 2回戦 3回戦 4回戦 5回戦 6回戦 7回戦 勝敗 順位
山田将棋Ver 3.00 ○ponanza ○臥龍 ○鈴木将棋 ○隠岐 ●KCC ●Blunder ●WILDCAT 4-3-0 6
2次予選へ進出!

2次予選(シード15+勝ち上がり9の計24チーム/上位5チームが決勝リーグへ進出)

1回戦 2回戦 3回戦 4回戦 5回戦 6回戦 7回戦 8回戦 9回戦 勝敗 順位
山田将棋Ver 3.00 ●習甦 ●KCC ○WILDCAT ●TACOS ○Shotest ●K-Shogi ○ym将棋 ○マイムーブ ●SPEAR 4-5-0 12
12 位で、2 次予選シードを獲得!

今回の準備、取り組み

まともに活動を始めたのは 2 月頃。取り組みや、強化ポイントは以下。 取り組み期間はこれまでで最も短いような気がするが、内容は 濃かったと思う。新 PC は開発モチベーションを 高めるためのご褒美になった。経験という意味で初めて自作に挑戦。 ネットのおかげで問題なく組めた。オレゴンチームのプロセッサは あまり評判がよくないらしいが、仕方がない。マザーからの 新調であり、いまさら前世代のプラットフォームで組むわけには いかない。今後 LGA1366 ソケット向けに、より洗練された プロセッサが出ることを期待したい。

一番のプログラム的改良は、マルチスレッド化。新 PC はアメであった反面、 ムチの意味もこめて。コア 4 つのうち、3 つを遊ばせて戦っていたんでは 笑いものになりかねないんで、自分を追い込むことができた。 とはいえ、着手は 3 月上旬。間に合う可能性は、 50% ないと思っていたが、今年はこれさえ間に合えば満足、 という気持ちで取り組んだ。

参考にしたのはお約束の Crafty。Crafty で TREE 構造体で 実装されている「局面情報のラッピング」は、実は第 17 回参加の時点で 完了していた。TREE という名前は探索木に由来するのだろうが、 なんとなく味気なく感じたので、山田将棋では WORLD という 名前にしている。「将棋盤という世界」を複製して、別スレッドに 処理を任せるというイメージだ。で、その構造体へのポインタを *w で 確保し、w を各関数へ渡し、w->ban[] (盤)、w->kiki[] (利き)と いったデータを参照・更新する。

始めの 2 週間くらいは、山下さんの Crafy メモを片手に、 自分でも Crafty のコメントに和訳をつけてみた。すると、 関数同士のつながりや変数の用途が、少しずつではあるがぼんやり 見えてきた。用途などのコメントが見当たらない変数は、 grep してどの関数で使われているかを調べ、「なんだ、 デバッグ用情報として出力されてるだけだ」という 確認ができたら、自分のプログラムでの適用や導入を後回し、 という具合に進めた。で、なんとか動いたのが 4 月 20 日頃。 その後 1 週間くらいで、LPS, NPS がいい感じに上がってきたんで、 うれしくなった。次の一手問題での解答時間が早くなった。

バグ修正で大きかったと思われるのは、両玉からの距離に 応じた位置評価テーブル、の探索中での更新処理。もう 2 年くらい前に実装していたと思う。更新にあたって、 直前(親)の指し手が玉移動、という条件は当然のもの。 玉が移動しない枝を進む・戻る場合は、このテーブルの更新は 不要だ。がこの条件に指定していた玉の先後を見事に 逆に指定していたのだ。というわけで、ノードの頭でむなしく if 判定が空回りして、テーブルがまったく更新されて いなかったのだ。

取り組みの内容が濃かったという意味では、コメダプログラミングが 大きい。コメダというのは、東海地方を中心に展開されている 喫茶店チェーン。きちんと分煙されてる店舗をみつけ、 平日帰宅後に 1 時間半くらい、20 回くらいは通ったと思う。 適度な視線で集中できるうえ、ファミレスと違い泣きわめく 子供にイライラさせられることもない。

会場が都内に

Waseda Univ. 会場が、木更津から早稲田大学に変わった。名古屋から参戦している 私にとっては前泊 & 後泊が必要なことには変わりない。 ただ、都内の職場に勤める先輩と飲んだり、世界卓球2009横浜を 見たり出来たので良かった。世界選手権のはしごって、結構貴重かもしれない。 会場は若干狭さを感じたが、コンパクトでよかったと思う。

1次予選

初戦 ponanza 戦で、いきなりトラブル。 対局が始まってしばらくしてから、局面が止まっていることに 気づいた。こちらの load がゼロに張り付いていたんで スレッドまわりでバグが出て落ちたか!? と青くなった。 相手にもこちらの手が渡ってなく、切れ負け待ちだな、とあきらめていた。 が、よくよく画面を見ると、こちらは着手を送信しているし、 プログラムも segmentation fault で core dump してるわけでもなく、 プロセスとして動いている(要はサーバからの応答を待っていた)のだ。 これを CSA 山田さんに伝えたところ、ささっとパケットキャプチャで LAN の状況を確認してくださり、IP アドレスの重複によると思われる エラーパケットが大量に発生していることが判明した。ということで、 再戦させていただくことになり、勝ちを拾わせていただいた。 こちらの非でなかったので改めて対局させていただいたことに本当に 感謝したい。ログイン直後サーバが ping に反応しなかったんで、 なんかおかしいなぁ、感じてたんだよなぁ。2 次予選後の反省会で、 ponanza の作者さんの話ぶりを聞いて、相当のポテンシャルを感じた。 来年以降必ず星を伸ばしてくると思う。

第 6 戦の Blunder 戦で、初めて勝又先生に解説をいただいた。 初参加ながら好調な Blunder に注目されてのことだと思うが、 劣勢になり結局負けとなった山田将棋側にいろいろアドバイスいただいた。 まず、二枚金。もろいうえに、2八銀と上がるタイミングが難しく 壁銀にもなりやすいので、最近は相振りでも美濃で戦うのがよいとのこと。 そして相振りは 3 手目に角道を止めた先手番側がそのままだと 角の働きが悪いので、角交換を目指すべきとのこと。 勉強になった。早速その対局後、相振り先手のケースでは、角交換を あまり抑制しないように手直しした。振り飛車しか指せない山田将棋には 序盤角交換を抑制するためのパラメータが 10 年以上前からある。 このパラメータを上記条件時に緩和した。二枚金については 定跡とのからみもあるので、来年までに改善したい。

結局 4 勝 3 敗ながら、4 連勝スタート後の残り 3 戦が、 同じく星の伸びていた上位との対戦となったため、 ソルコフ等で予選通過が決まった。ほっとした。

2次予選

my machine 3.00GHz までオーバークロックして臨んだ。フルロード時にコア温度が 10 度くらい 上がって 70 度前後になるが、まぁ大丈夫だろうと楽観して(冷える CPU クーラーを 使うと 3.50GHz 超も余裕らしいが、あいにくこの PC はリテールクーラー)。

習甦、KCC にいいところなくたて続けに負けたあと、 探索深さと思考レベルを調整。両対局とも消費時間が 10 分未満だったため。

以下は第 3 戦、後手 WILDCAT が△6八金と歩を払って寄ったところ。

後手 WILDCAT の持ち駒  銀桂歩

 9 8 7 6 5 4 3 2 1
 ・v桂 ・v香 ・ ・ ・ ・ ・ 一
v香v王 ・v金 ・ ・ 竜 ・ ・ 二
v歩v歩v歩 ・v歩v金 ・ 馬 ・ 三
 ・ ・ ・ ・ ・ ・v歩 ・v歩 四
 ・ ・ ・ 銀 ・ ・ ・v桂 ・ 五
 ・ 歩 歩 銀 歩 銀 歩 ・ 歩 六
 歩 ・ ・ ・ ・ 歩 ・ 歩 ・ 七
 ・ ・ ・v金 ・ 金 ・ 王 ・ 八
 香v竜 ・ ・ ・ ・ 角 桂 香 九

先手 山田将棋 の持ち駒  歩歩歩
ここから▲6三歩△7二金▲1四馬として、こちらの勝ちが見えてきたようだ。 落ちている4三の金に目がくらまなかったのが良かった。 以降、2五の桂を取って、こちらの玉は上部に逃げれるし、 相手玉は▲6四桂でしびれるため。

次の局面は、第 5 戦 Shotest に対して、山田将棋が△5五金と打って角道を止めたところ。

後手 山田将棋 の持ち駒  

 9 8 7 6 5 4 3 2 1
v香v桂 ・v金v角 ・ ・v桂 ・ 一
 ・v王v銀 ・ ・ ・ ・ 銀v飛 二
 ・v歩 ・v金 歩v歩 ・v歩v香 三
v歩 ・v歩 ・v歩 ・v歩 ・v歩 四
 ・ ・ ・v歩v金 桂 ・ 歩 ・ 五
 歩 ・ 歩 ・ ・ ・ 歩 ・ 歩 六
 ・ 歩 ・ 歩 ・ ・ ・ ・ ・ 七
 ・ 角 王 銀 金 ・ ・ ・ ・ 八
 香 桂 ・ ・ ・ ・ ・ 飛 香 九

先手 Shotest の持ち駒  銀歩
この後 Shotest が▲3一銀打として、銀を守りにいったのが良くなさそうだ。 山田将棋は、▲2一銀△2二飛▲4一銀とされて2一の銀を取ると▲5二歩成から囲いを はがされる筋が見えていて、こちらが悪そうという評価だった。 結局、飛車が 6 筋に転回し、そっぽの銀を遊ばせることに成功、 取れる大駒を気にせず鋭く攻めて寄せることができた。

次は、第 8 戦、マイムーブが△7五銀と引いて、次の飛車成りをみているところ。

後手 マイムーブ の持ち駒  歩歩

 9 8 7 6 5 4 3 2 1
v香v桂 ・v金v銀v金 ・v桂v香 一
 ・v飛 ・ ・ ・ ・ ・v王 ・ 二
v歩 ・ ・v歩v角v歩v歩v歩v歩 三
 ・ ・ ・ ・v歩 ・ ・ ・ ・ 四
 ・ ・v銀 ・ ・ ・ ・ ・ ・ 五
 ・ ・ ・ 歩 銀 歩 ・ ・ 歩 六
 歩 ・ ・ ・ 歩 金 歩 歩 ・ 七
 ・ ・ 飛 ・ ・ ・ 銀 王 ・ 八
 香 桂 ・ ・ 角 金 ・ 桂 香 九

先手 山田将棋 の持ち駒  歩
飛車先を完全に破られたように思うのだが、ここで山田将棋は▲8六歩。 超うさんくさい手だ。こんなので受かっているのだろうか。銀に払われると、 ▲4五銀(ねらいは角頭)△8四飛(角頭を受ける)▲8五歩といった感じで良さそうではあるが。 この後、うまく駒をさばいて、5三にと金を作りうまく攻めることができた。

最終的に 4 勝 5 敗 2 次予選 12 位でシード獲得、という過去最高の成績となった。 が 12 位という順位には大きな意味はないと思う。 A級リーグ1号、TACOS、きのあ、うさぴょんに、これまで一度も 勝ったことがないのに、対戦相手にめぐまれてたまたま ソルコフとかが良かっただけ。3 勝、4 勝のグループはほとんど差がないと思う。

来年にむけて

相手のターンでしっかり思考する、定跡集を利用する。 評価関数の学習は、3ヶ年計画だ。この一年では、まず私自身が 機械学習、強化学習、について学習する。
Taikou Yamada (t-yamada _at_ ceres.dti.ne.jp)