HoneyWaffle 第27回WCSC版
Go
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
README.md
waffle_book.db
waffle_wrapper.go

README.md

HoneyWaffleWCSC27

HoneyWaffle 第27回WCSC版

第27回世界コンピュータ将棋選手権(WCSC27)に出場した将棋ソフトです。 公開できるものをここに公開します。

HoneyWaffleの構成はこのツイートの通りです。

https://twitter.com/shiroi_gohanP/status/860540907774369793

HoneyWaffleは、
1「やねうら王の一式」、
2「地道に手入力した定跡ファイル」、
3「EC2接続兼時間攻めモジュール」
の組み合わせでできています。
1と2を用意すればああいう将棋になります。
定跡ファイルは、まふ定跡に追記で作っていたので、別途追記分だけ公開するようにします

ハニワ定跡

ファイル名 waffle_book.db

説明

やねうら王を絶対飛車振るマンに変貌させるための定跡ファイルです。

  • 先手番の場合、初手58飛固定となっています。

  • 後手番の場合、先手が26歩76歩、76歩26歩の出だしであれば34歩42飛の形になります。 それ以外の初手(38銀、58玉等)の場合はほぼ2手目52飛車となります。(Ponanza Chainer戦で後手番となることを想定。幸いにも先手番でしたが、その後の決勝リーグの蒼天幻想ナイツ・オブ・タヌキ戦で機能したので、徹夜は無駄ではなかった)

floodgateやWCSC27本番の棋譜から、極力飛車を振らせる(評価値や勝敗は全くの度外視)目的で手作成しました。

背景

ご存知の通り、近年のコンピュータ将棋では、嘆かわしいことに、振り飛車は不利飛車と揶揄され、減少傾向にあります。

現在フリーで入手可能な評価関数を使用すると、飛車を振っただけで評価値が減少するありさまです。

ソフトに飛車を振らせるには、振り飛車党の評価関数を作るか、定跡ファイルで指し手を固定するかの2択となります。

振り飛車党の評価関数を作るには、そもそも振り飛車で勝った棋譜が多く必要になると思いますが、その棋譜が少ないのです。(卵が先か鶏が先か?)

そのため、定跡で飛車を振らせ、高品質な振り飛車の棋譜を選手権で作ろうとした次第です。

注意

WCSC27本番では、まふ定跡の技巧向けファイルをやねうら王形式に変換し、そのファイルを改変して使用していました。

公開にあたり、改変した部分のみ抽出しています。

なお、飛車を振った後の手順はほとんど含んでいません。あの指し回しはやねうら王の力によるものです。

私個人が好きな早石田の変化は、勝てなかったことと、まふ定跡のメタとなっているため除外しています。 必要であれば一次予選7局目の大合神クジラちゃん戦の棋譜を元に生成してください。(21手目くらいまで)

使い方

やねうら王単体の標準構成がすでに将棋所で動作しているものとします。

  • waffle_book.dbをダウンロードします。

  • やねうら王のbookフォルダの中に、ダウンロードしたwaffle_book.dbを移動またはコピーします。

  • waffle_book.dbをuser_book1.db,user_book2.db,user_book3.dbのいずれかにリネームします。

  • エンジン管理にて、リネームした定跡ファイル名を選択します。

  • 同じく、BookDepthLimitを0にします。

EC2接続兼時間攻めモジュール

ファイル名 waffle_wrapper.db

使い方

このファイルが必要になる方なら、見ただけで分かってもらえるかと思いますが念のため。

  • go 1.7~ くらいで動作確認済です。(Windows,Mac,Ubuntu)

  • waffle_wrapper.db の main() 冒頭の将棋エンジンの実行ファイルのパス、EC2なら接続情報を更新します。前もって、黒い画面からその接続情報でsshができることを確認することを推奨します。EC2への接続は、Ubuntu環境でしか確認していません。(WindowsだとPowerShell外からもsshできるのだろうか?)

  • ビルドは go build waffle_wrapper.go で、バイナリができます。

  • エンジン管理からそのバイナリを選択して登録します。

  • ローカルの場合は、バイナリを呼び出すエンジンと同じパスに置く必要があります。

仕様

コメント通りですが、相手より時間があり相手が残り1分を切ったら5秒未満で指します。(やねうら王のマージン2種を含む)

また、相手より3分以上も時間を使っている場合、10秒未満で指します。

HoneyWaffle視点だけの感想

https://shiroigohanp.tumblr.com/post/160615174194/wcsc27-honeywaffle%E8%A6%96%E7%82%B9%E3%81%AE%E6%84%9F%E6%83%B3