第18回世界コンピュータ将棋選手権 1次予選 4回戦

4 回戦の前に 1 時間ほど昼休みがあったので、プログラム修正とテストをしていました。
飛角歩が成れる時には必ず成るようにしたのと、時間配分を見直して、中盤により時間を使うようにしてみました。
プログラム修正自体は数行で、1 回戦の終了直後に修正は終わっていたのですが、なにぶん指し手生成ルーチンの修正なので、慎重を期すことに。
(illegal_move で負けてはつまりませんので)
一応テスト対局を 2 局ほどさせてみて、違法手を指さないこと、飛角歩の不成を読まないことを確認し、4 戦目から修正バージョンを投入しました。


第4戦の相手は「なのは」。
なのはも「れさぴょん」ベースのプログラムなので、ym将棋とは同門対決ということになります。
私からみて左斜め前の席に座っておられ、ときどき「なのは、行きます!」という合成?音声が聞こえるので、気になってました。


作者の方と挨拶の後、あらためてマシンを見せて頂きました。
マシン本体は大きなタワー型でしたが、ディスプレイは 7 型くらいで小さく、評価値などは目をこらさないと見えないほどでした。


対局の方は、2 手目に後手なのはが△14歩と端歩を突いてきます。
先手ym将棋は 11 手目に▲76歩と角道を開けた後、直後に▲77桂と、またも跳ねてしまいました。


なのははこの後、△85歩〜△86歩と一直線に仕掛けてきます。
図は 16 手目、△86歩まで。

後手の持駒:なし
  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歩 歩 ・ ・ ・ ・ ・ ・
歩 歩 桂 歩 歩 歩 歩 歩 歩
・ 角 金 銀 ・ 銀 ・ 飛 ・
香 玉 ・ ・ ・ 金 ・ 桂 香
                                                        • +
先手の持駒:なし 先手:ymshogi 後手:Nanoha2008

ym将棋は、▲86同歩△同飛の後、▲75歩。
この時の読み筋は、▲75歩△51王▲59金△82飛▲69金△62金▲26歩、で先手わずかに有利(+400くらい)。
後手は76の歩を1手で取れなくなったのだから、この辺でいったん飛車を引いて守りを固めるのがいいだろう、という読みのようです。


しかし、なのははその誘い?に乗らず、△76飛〜△75飛と回って歩を取りに行きました。
ym将棋はとりあえずそれを無視し、右の金を69まで寄せて守りを固めます。
角の頭が空いたままで変な形なのですが、そこをなのはは突いてきました。
図は 26 手目、△86歩打まで。

後手の持駒:歩
  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歩 ・ ・ ・ ・ ・ 歩 ・
歩 ・ 桂 歩 歩 歩 歩 ・ 歩
・ 角 金 銀 ・ 銀 ・ 飛 ・
香 玉 ・ 金 ・ ・ ・ 桂 香
                                                        • +
先手の持駒:歩 先手:ymshogi 後手:Nanoha2008

この後は、▲87歩打△同歩成▲同金、と歩を交換し、ym将棋は▲98香と潜る準備。
さらに▲86金と飛車に当たります。なのはは△74飛〜△54飛と飛車を逃がしました。


ym将棋の王様が99に潜ると、なのはの王様は51に戻っていきました。
その後は両者じりじりと駒を進め、67 手目、ym将棋が▲46歩と仕掛けます。
図は 67 手目、▲46歩まで。

後手の持駒:歩二
  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歩 歩 ・
・ ・ ・ ・ 歩 歩 ・ 飛 歩
・ 金 桂 歩 銀 ・ 歩 ・ ・
香 ・ 金 ・ ・ 銀 ・ ・ 香
玉 ・ 角 ・ ・ ・ ・ 桂 ・
                                                        • +
先手の持駒:歩 後手番 先手:ymshogi 後手:Nanoha2008

ここから△46同歩▲同銀で歩を交換した後、なのはは△13角。
それに対し、ym将棋はなんと▲15歩。


この時は 6 反復目の途中で制限時間(この時は30秒)が来て、その時最善手だと思っていた▲15歩を指したものです。
読み筋は、▲15歩△15歩▲15香△14歩打▲45銀△33銀、で評価値は -202 、後手有利。
もう少し探索していたら、△14歩打の後、香が取られることが理解できたかもしれません。


実戦では▲15歩の後、△同歩と取られ、さらにまずいことに▲84歩と打ってしまいました。
打った理由は前と同じで、時間制限によるものです。
▲15同香が△14歩打でまずいことに気が付いて、▲84歩打を見つけました。
見つけたのは 5 反復目で、このときは▲84歩打△同銀のあと、▲57角△95銀▲同香で銀が取れる、と判断していました。
ところが 6 反復目に移り、▲84歩打△同銀▲57角の後、△83歩打とヒモをつけられると、▲84同角は△同歩でまずい、ということを理解したようです。
そこで最初の▲84歩打は意味がなく、水平線効果であると判断し、次の手を探しに行ったのですが、その途中で時間がなくなり、そのまま▲84歩打を指してしまったのでした。


なのははこれを△同銀と取り、ym将棋は結局▲57角を指しました。
図は 75 手目、▲57角まで。

後手の持駒:歩五
  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歩
・ ・ ・ ・ 歩 銀 ・ 飛 ・
・ 金 桂 歩 角 ・ 歩 ・ ・
香 ・ 金 ・ ・ 銀 ・ ・ 香
玉 ・ ・ ・ ・ ・ ・ 桂 ・
                                                        • +
先手の持駒:歩 後手番 先手:ymshogi 後手:Nanoha2008

読み筋は、▲57角△44歩打▲15香△14歩打▲同香△同飛、で評価値は +235 、先手有利。
香を取られて歩を 2 枚取るので、駒損のようですが、34の飛車を14に動かしたことで、35の歩が浮くことを評価したのかもしれません。
△44歩打の意味は分かりませんが、▲57角の後▲66角〜▲11角成を防ぐのでしょうか。


実戦ではこの後、△36歩▲同飛△同飛▲同歩と激しく駒交換し、なのはが△28飛と打ちこんできました。
▲37桂と逃げた後、さらに△46角▲同角△48飛成と交換を繰り返し、ym将棋は▲44飛と打ちました。
図は 85 手目、▲44飛打まで。

後手の持駒:銀二 歩五
  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龍 ・ ・ 香
玉 ・ ・ ・ ・ ・ ・ ・ ・
                                                        • +
先手の持駒:角 歩二 後手番 先手:ymshogi 後手:Nanoha2008

読み筋は、▲44飛打△18龍▲79金△43香打▲66角打、で評価値は -609 、ここで後手有利の判断に転じました。
もう残り時間が 2 分半を切り、5 反復目の途中で打ち切っています。


実戦では△78龍と金を取りながら龍が迫り、▲64飛で王手をかけてみたものの△63歩打と受けられ、しかたなく▲89歩打。
評価値はどんどん下がり、-3000 くらいまで下がっていました。
読み筋は、▲89歩打の後、△87龍▲55角△86銀打▲32角打。
図は 89 手目、▲89歩打まで。

後手の持駒:金 銀二 歩四
  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龍 ・ ・ ・ ・ ・ 香
玉 歩 ・ ・ ・ ・ ・ ・ ・
                                                        • +
先手の持駒:角 歩二 後手番 先手:ymshogi 後手:Nanoha2008

なんとここで、なのはから、指し手が帰って来なくなってしまいました。
作者さんは私の席で一緒に観戦しておられたのですが、ここまで 30 秒程度で指していたのが、1 分以上経っても指してきません。
「だいぶ長考してますけど、大丈夫ですか?」
と声をかけ、一緒になのはのディスプレイを見に行くと、どうやらプログラムでループが起きている様子。
審判の方も見に来られましたが、どうすることもできません。
結局、8 分ほど時間を余していたなのはが、そのまま時間切れ負けとなり、ym将棋に選手権初勝利がころがりこんできました。


ルール上、勝ちにはなりましたが、内容的には完全に負けてましたので、複雑な気分でした。
今こうやって自戦記を書いていると、自分のプログラムの問題点がたくさん見えてきます。
水平線効果を見つける処理を入れてみたものの、時間切れとの競合を考慮してなかったとか、
静止探索を入れてないのを、何とか評価関数でごまかしてみたものの、手番を考慮してないので不正確だとか。
来年は静止探索を絶対入れたいし(今年も入れたかったのですが、スピード低下が激しいので泣く泣く断念)、序盤ももう少し改善したいです。
時間切れの方は、いわゆるパニックタイムみたいなものを思案中ですが、もう少しいい案がないか考えてみたいです。