やねうら王がAobaZeroに駒落ちで負けまくっている件について

AobaZeroはいま駒落ちの評価関数の学習に取り組んでいるらしいのだが、そのスパーリングパートナーであるKristallweizen(探索部:やねうら王)が負けまくっているらしい。

どういうことかと言うと、駒落ちだと入玉宣言の時に必要な駒点が違うらしいのだ。(私は知らなかった)

普通、コンピュータ将棋の大会では、入玉宣言には、CSAルールを用いる。CSAルールだと、27点法だ。

// CSA : コンピュータ将棋協会 のこと。
// 27点法 : 小駒1点、大駒5点として駒の点数を数える。先手は28点、後手は27点あれば良い。その他は普通の(日本将棋連盟の)入玉ルールに準ずる。

ところが、駒落ちの場合、その落とした(ハンデのために盤上から取り除いた)駒の駒点を加点して計算するらしいのだ。つまり、二枚落ちの場合、大駒を2つ取り除くので、上手(うわて)は、10点を加点して駒点を計算するのである。

ややこしいことに、駒落ちだと駒を落とした方が先に指すので、手番からすると上手が先手である。しかも、51に玉がいる側が上手と決まっている。将棋ソフトだと、普通、先手はBLACK、後手がWHITEなのだが、上手はWHITEにも関わらず先手なのだ。

そんなわけで、CSAルールでかつ、二枚落ちの時、上手は、上手の駒点が 28点(上手を先手だとみなした場合) – 10点(大駒2枚) = 18点以上で入玉宣言ができるということになる。下手(したて)は、27点(後手とみなした場合)以上である。

// 上手を先手とみなすのかどうかについては後述する。

このルールはどこに書かれているのか?

この駒落ち時の宣言法のルールについては、日本将棋連盟の「よくある質問」に以下の記述がある。

なお、駒落ち将棋の場合は、落とした駒が上手にある、と仮定して点数計算をします。
(例・角落ちで、上手に大駒1枚、小駒14枚ある場合は、24点として計算)

// 将棋のルールに関するご質問(日本将棋連盟) : https://www.shogi.or.jp/faq/rules/

やねうら王を駒落ちの入玉宣言対応に

AobaZeroに負けまくるのも気分が悪いので、やねうら王、駒落ちの入玉宣言に対応させた。

https://github.com/yaneurao/YaneuraOu/commit/05e8ead9f58a27cd7467d9b597bdf2fc0dea0d88

ところが、将棋所やShogiGUIなどGUI側がこの駒落ちの入玉宣言に対応していない(?)ので、上記の入玉宣言条件を満たしているからと言って、エンジン側が入玉宣言するとGUI側から非合法手扱いされかねない。

そこで、従来の宣言法と駒落ち対応の宣言法の二つに分けた。あと、やねうら王は、CSAルール(27点法)と日本将棋連盟のルール(24点法 = 31点以上で入玉宣言できる)に対応しているし、ついでにトライルール、入玉宣言なしにも対応している。

ということで、入玉宣言のオプションの項目が 2(従来の宣言法,駒落ち対応の宣言法)×2(27点法,24点法) + 1(トライルール) + 1(入玉宣言なし) = 6通りもあることになってしまった。

// 初期局面で正しい入玉宣言の点数が配列に設定されることをUnitTestに書いてテストは通った。実際の入玉宣言ができる局面では試していないので、誰か試してほしい。

駒落ちの上手(うわて)は先手なのか後手なのか問題

それで駒落ちの上手を宣言法では先手とみなすのか後手とみなすのかというのが問題となる。これに関して日本将棋連盟としての公式なルールは定められていないようで、48さんが勝又先生に確認したところ、以下のような回答が返ってきたそうだ。

ちょっとややこしいのが27点法です。27点法では先手28点,後手27点で宣言勝ちとなります。駒落ちの上手はどちらかということですが,先日CSA例会で勝又先生に確認したところ上手は後手扱いである旨説明頂きました。つまり,上手が27点ベースで駒落ち分を引いた点で宣言可能。下手は28点で宣言可能となります。

// 将棋の駒落ち戦の宣言法について(48’s diary) : https://bleu48.hatenablog.com/entry/2021/09/14/230000

日本将棋連盟は24点法でやっているので、上手が先手であるか後手であるかは問題とならない。すなわち、27点法については日本将棋連盟の公式なルールは存在しないし、日本将棋連盟としては27点法のことなんか知ったこっちゃないという感じなのだとは思う。

なので上の勝又先生の話は、日本将棋連盟としての見解ではなく勝又先生の個人的な見解のようではある。

やねうら王の駒落ちの宣言法について

やねうら王では、上手を先手とみなして駒落ちの27点法を実装したが(上手は、二枚落ちなら 28 – 10 = 18点以上で入玉宣言できる)、AobaZeroとこの部分が異なるなら、AobaZeroに合わせるように修正する予定。

[2021/09/15 0:30 追記]
AobaZeroは、上手を後手とみなし27点以上(二枚落ちなら17点以上)で入玉宣言できる模様。やねうら王も、AobaZeroに合わせることにする。

https://github.com/yssaya/komaochi/blob/73258b38a52da395456ed180ea07edea8c491225/src/usi-engine/bona/ysszero.cpp#L1952

4 thoughts on “やねうら王がAobaZeroに駒落ちで負けまくっている件について

    • C++のコードがそのままブラウザで動かせる技術があるらしく、やねうら王のメモリ管理まわりを修正すれば良いようなのですが、いまその作業をやる気が起きないです。

  1. twitterで言っているrtx3090搭載機が欲しいです。
    奨励会員なんですけど今はノートで水匠動かしていて
    nps300万くらいです。dl系が使えないので是非なすりつけてください!!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です