将棋の最新・最強ソフトの導入手順

将棋ソフトを導入する手順について

下記のアベマTVのサイトで藤井聡太七段の対局のある日は中継をやっています。そして毎日のように過去の藤井七段の対局が再放送されています。

そういった対局の放送を見ながら現在の形勢がどうなっているかを教えてくれるのが将棋ソフトになります。この将棋ソフトの評価値を見て藤井七段が最善手を指すかどうか見守ることになります。これからそんなソフトをどうやってセットアップするか説明していきます。

■将棋ソフトは、GUI、探索エンジン、評価関数で構成されています。
[ GUI ] 将棋盤の表示と駒を動かす部分です。

[ 探索エンジン ] 思考部分であり、将棋の指し手候補を評価関数に問い合わせることで評価値を入手します。

[ 評価関数 ] 評価関数とは局面と手番を考慮した評価値を算出してくれる関数です。

探索エンジンは現局面から着手した局面の評価値を入手し、その上位を例えば3つぐらいに絞ってそれを繰り返すことで以降の分岐を深く読むことになります。現局面の評価値が先へ行ってどう変化するか調べ総合的な評価値として算出することになります。

■前提知識はこれぐらいにして早速導入してみましょう!

GUIの代表的ソフト「ShogiGUI」のインストールが最初に実行する作業になります。なおGUIは最初からエンジンも登録されているので、インストール後すぐにコンピュータとの対局や検討ができます。実際は一度最新・最強のソフトを登録した後ではとても使う気になりません。最強のソフトを使っているという満足感が得られないからです。最先端の探索エンジン+評価関数の組み合わせて探索エンジンを登録することで常に最強のソフトで局面の評価を行うことができるようになります。

 1.将棋GUIのダウンロード

2019/03/30 現在の最新版のShougiGUIのバージョンはv0.0.7.8です。

下記のURLをクリックするとダウンロードできます。

http://shogigui.siganus.com/shogigui/ShogiGUIv0.0.7.8.zip

なおダウンロード場所と解凍については以下のやり方をお勧めします。

[ ダウンロード場所 ] %USERPROFILE%\Desktop\将棋ソフト\ダウンロード

・デスクトップに「将棋ソフト」フォルダを作成します。

・「将棋ソフト」フォルダ配下に「ダウンロード」フォルダを作成します。 

・ダウンロード時に用意した上記フォルダを指定します。

f:id:gyokusen_since:20190330181506p:plain

ZIPファイルをダウンロードする

 ダウンロード終了後は以下のようにzipファイルを右クリックしてコンテキストメニューから「7-Zip>"ShogiGUIv0.0.7.8\"に展開」クリックして解凍します。

※解凍ソフトは7-Zipをお勧めします。

https://7-zip.org/a/7z1900-x64.msi

解凍後の「将棋GUI」の立ち上げとエンジンの登録方法については項番4で実施します。

2.探索エンジンのダウンロード

項番1と同様にダウンロード後、解凍します。

https://github.com/yaneurao/YaneuraOu/releases/download/V4.83/YaneuraOu2018V483all.zip

3.最強の評価関数の入手

https://www.qhapaq.org/shogi/kifdb/

上記サイトにある以下のURLをクリックしてダウンロード後、解凍します。

https://www.qhapaq.org/static/media/bin/dolphin1.01%2Billqha3.zip

4.将棋GUIにおいて「ツール>エンジン設定」の手順

手作業で実施すると以下の手順となります。結構面倒なファイル操作が続くので一連の作業をバッチファイルの実行で実現できるようなバッチスクリプトを用意しますので、それをダウンロード後にダブルクリックで実行できるようにします。

http://gyokusen.space.toratorawiki.net/?IT%E9%96%A2%E9%80%A3/0031/make_shogi.bat&action=raw

※但し下記の手作業の手順の項番③から項番⑨までの手作業を実行してくれるバッチスクリプトです。なお下記の画面が出たら「詳細情報」をクリック後に「実行」ボタンが表示されるのでクリックすれば実行できます。

f:id:gyokusen_since:20190331214141p:plain

バッチファイルをダウンロードして実行しようとすると出てくる画面

f:id:gyokusen_since:20190331214525p:plain

この画面になったら「実行」ボタンをクリックする。

<将棋GUIを起動前に行う準備手順>

① 解凍した「ShogiGUIv0.0.7.8」フォルダ、「YaneuraOu2018V483all」フォルダ、「dolphin1.01+illqha3」フォルダを選択後(Ctrlキーを押しながらクリックする)、右クリックでコンテキストメニューを表示後、「切り取り」をクリック。

②「将棋ソフト」フォルダ配下に移動して右クリックでコンテキストメニュー表示後、「貼り付け」をクリック。

③「将棋ソフト」フォルダ配下に「S01E01_YOv483_illqha3」フォルダを作成する。操作方法は、右クリック後、コンテキストメニューが表示されたら「新規作成>フォルダ」をクリックする。「新しいフォルダ」の名前を「S01E01_YOv483_illqha3」に変更する。

④「dolphin1.01+illqha3」フォルダ配下にある「illqha3」フォルダを選択し右クリック後、「コピー」をクリックする。次に項番③で作成した「S01E01_YOv483_illqha3」フォルダ配下で右クリック後、

⑤ 項番③で作成した「S01E01_YOv483_illqha3」フォルダを開き、右クリック後、「貼り付け」をクリックすると「illqha3」フォルダが作成される。さらにもう一度同様に「貼り付け」をクリックすると「illqha3 - コピー」フォルダが作成される。

⑥「S01E01_YOv483_illqha3」フォルダ配下に貼り付けされた「illqha3 - コピー」フォルダをクリックするとフォルダ名の変更ができる状態になるので、そこで「eval」と名前変更する。

⑦ 「S01E01_YOv483_illqha3」フォルダ配下に下記の内容のテキストファイルを作成する。

ファイル名         :engine_name.txt

ファイルの1行目:S01E01_YOv483_illqha3

ファイルの2行目:YaneuraOu2018NNUE_avx2.exe S01E01_YOv483_illqha3

 ⑧ 項番①で「将棋ソフト」フォルダ配下に移動した「YaneuraOu2018V483all」フォルダを開き、「YaneuraOu2018KPPT_avx2.exe」にカーソルを移動してクリックして選択後、右クリックしてコンテキストメニューを表示後、「コピー」をクリックする。

⑨ 「将棋ソフト」フォルダ配下の「S01E01_YOv483_illqha3」フォルダを開き、右クリック後、「貼り付け」をクリックする。

⑩ 項番①で「将棋ソフト」フォルダ配下に移動した「ShogiGUIv0.0.7.8」フォルダを開き、「ShogiGUI.exe」にカーソルを移動してクリックして選択後、右クリックしてコンテキストメニューを表示後、「送る>デスクトップ(ショートカットを作成)」をクリックする。

<将棋GUIを起動後の手順>

① デスクトップ上にあるショートカットをダブルクリックする。

② メニューバーにある「ツール>エンジン設定」をクリックする。

f:id:gyokusen_since:20190331095243p:plain

エンジンの登録

③ 「エンジン一覧」画面がポップアップしたら「追加」ボタンをクリックする。

f:id:gyokusen_since:20190331101032p:plain

エンジン設定

④ 先ほど登録した「S01E01_YOv483_illqha3」フォルダ配下にある「YaneuraOu2018NNUE_avx2.exe」を選択後、「開く」ボタンをクリックする。

f:id:gyokusen_since:20190331101441p:plain

エンジンの登録

⑤ 「エンジン設定」画面が開いたら「OK」ボタンをクリックする。

f:id:gyokusen_since:20190331102934p:plain

⑥ 「エンジン一覧」画面に戻ったら「OK」ボタンをクリックする。

f:id:gyokusen_since:20190331103409p:plain

エンジン登録後の状態

⑦ メニューバーにある「ツール>検討設定」をクリックする。

f:id:gyokusen_since:20190331103908p:plain

検討設定の登録

⑧ 「検討」画面が開いたらエンジンリストから先ほど登録したエンジンを選択する。

f:id:gyokusen_since:20190331104524p:plain

検討用のエンジン登録

⑨ 「設定」枠にある「候補手の数」をとりあえず「3手」に変更して「OK」ボタンをクリックする。

f:id:gyokusen_since:20190331104848p:plain

検討用エンジンの登録2

⑩ メニューバーの下にある「検討」ボタンをクリックする。

f:id:gyokusen_since:20190331105636p:plain

検討ボタンのクリック

⑪ 「検討」画面がポップアップしたら「検討開始」ボタンをクリックする。

f:id:gyokusen_since:20190331105948p:plain

検討開始ボタンクリック

⑫ 以上で終了です。このあとのもろもろの設定方法などはご自分でヘルプ等を参照してやりたいことを実現してください。

f:id:gyokusen_since:20190331110515p:plain

検討実施例

参考:

エンジン設定の用語について

Threads スレッド数
Hash 置換表サイズ[MB]
Ponder Ponder(相手番でも考慮)
WriteDebugLog デバッグログ出力
NarrowBook 出現確率の低い定跡を採用しない

NetworkDelay 通信の平均遅延時間[ms]
NetworkDelay2 通信の最大遅延時間[ms]

Contempt 引き分け時スコア(歩を100とする)
ContemptFromBlack 引き分け時スコアを先手から見た値とみなす
MultiPV MultiPV(指し手を上位N個求める)

Param1 パラメータ自動調整用X軸
Param2 パラメータ自動調整用Y軸

MinimumThinkingTime 最小思考時間[ms]
MaxMovesToDraw 引き分けまでの手数(0なら無制限)

EnteringKingRule 入玉ルール
# このコンボボックスの値
NoEnteringKing 入玉ルールを用いない
CSARule24 24点法(31点勝ち)
CSARule27 CSAの入玉ルール
TryRule トライルール

BookFile 定跡ファイル
# このコンボボックスの値
no_book 定跡なし
standard_book.db 標準定跡
yaneura_book1.db やねうら大定跡
yaneura_book2.db 超やねうら定跡
yaneura_book3.db 真やねうら定跡
yaneura_book4.db 極やねうら定跡
user_book1.db ユーザー定跡1
user_book2.db ユーザー定跡2
user_book3.db ユーザー定跡3
book.bin Apery用定跡DB

BookMoves 定跡を用いる手数(0=未使用)
BookEvalDiff 定跡の幅(0=無,30=狭,100=広)
BookLowLimitBlack 定跡で採用する評価値下限(先手)
BookLowLimitWhite 定跡で採用する評価値下限(後手)
BookOnlyThinkingMove 定跡では思考した指し手のみ用いる

BookEvalDiff 定跡の第一候補手との評価値の差
BookEvalBlackLimit 定跡の先手の評価値下限
BookEvalWhiteLimit 定跡の後手の評価値下限
BookDepthLimit 定跡のdepth下限(0=下限なし)

BookOnTheFly 定跡をメモリに丸読みしない
ConsiderBookMoveCount 定跡の指し手を採択率に比例させる

追加補足:

syougiultimit.seesaa.net

最新の評価関数のダウンロード先

Kristallweizen
この画面でdownloadをクリックすると保存出来る

github.com

orqha1018

qhapaq.hatenablog.com

この画面で「こちら」をクリックすると保存出来る
(最新版)評価関数 orqha1018
ダウンロードはこちら
https://www.qhapaq.org/shogi/kifdb/

illqha4
この画面の右上の左から2番目の「↓」(ダウンロードアイコン)をクリックすると保存出来る

drive.google.com


振り飛車党評価関数「振電」
この画面の「振電(振り飛車評価関数)」リンクをクリックすると保存できる

onedrive.live.com

居飛車党評価関数「水匠」
この画面の「水匠(居飛車評価関数-WCSC29)」リンクをクリックすると保存できる

https://onedrive.live.com/?authkey=%21ADXFPaoXVeV0uFE&id=67BEC1094A080033%2135642&cid=67BEC1094A080033

将棋の8枚落ちのハンデでソフトと対戦してみた!

標題の通りです。

 将棋盤のマスの縦横比が正方形なのでいまいちです。

なお登録するときに下手の名前が藤井七段のままになってます。

これは間違いです。私がコンピュータソフト(YOv483 KaiU)と対戦した時の棋譜を登録してここから表示できるようにしたものです。

▲私 vs. ▽YO_KaiU

 


棋譜を見やすい将棋盤で表示するために,Fireworks さんが作成されたアニメーション付棋譜再現プレーヤー 「フラ盤」を使用させていただいています.)

 これはいい!

 これは凄くきれいなサイトがありブログから表示する方法(フレーム使用)で提供しています。

 

 これは駒落ちはサポートしていないのでコンピュータ同士の棋譜を登録してみました。

 

将棋盤

 0

 

 

テスト

下記に朝日杯連覇の記事が公開されています。 このブログで一部を転載してみました。

ビデオのサイズ変更と初期設定に関して自動開始でないようにする方法が分かりませんでした・・・

ーーーーーーーーーーーー

過去に全棋士参加棋戦で連覇した棋士を調べてみた!

羽生九段の偉業が凄いが、藤井聡太七段は16歳にして早くも全棋士参加トーナメント棋戦の連覇という困難なことをやってのけた。現在の8大タイトル棋戦についても早ければ今年、遅くともあと3年以内には達成するだろうと思われる。棋譜を将棋ソフトで解析してみると他の棋士の解析結果とは明らかに質が違っているのである。疑問手や悪手の割合が少ないのである。現在のトップ棋士である渡辺棋王豊島将之2冠、広瀬竜王、佐藤名人らの棋譜棋譜解析結果と比べても図抜けているのである。そんな内容がよい藤井聡太七段であるがタイトル戦のトーナメントを勝ち抜くのは相当ハードルが高く15歳、16歳では到達しなかった。今年17歳になるのは7月なのでそれまでに棋聖戦の可能性が残ってはいるが果たしてどうなるのであろうか?

<連覇棋士

<全棋士参加トーナメント>
朝日杯  羽生善治 3連覇 藤井聡太
NHK杯 羽生善治 2回  大山康晴 佐藤康光
銀河戦  羽生善治 2回 

<シードプロ12名のみ>
JTプロ 羽生善治 久保利明 森下 卓 谷川浩司 2回 郷田真隆 3連覇

 

digital.asahi.com

 第12回朝日杯将棋オープン戦朝日新聞社主催、ローソン協賛、AbemaTV特別協力)は16日、藤井聡太七段(16)が史上2人目の2連覇を達成して幕を閉じた。決勝ではトップ棋士渡辺明棋王(34)を圧倒し、その強さを改めて印象づけた。

 決勝戦は、現在タイトル戦で快進撃を続けるトップ棋士の渡辺と、前回優勝者藤井の対戦。しかも公式・非公式戦を通して初手合という、今ファンが最も見たい黄金カードとなった。

 対局は午後2時30分、渡辺の先手で始まった。戦型は渡辺が誘導した格好で、互いに雁木(がんぎ)という陣形に組む「相雁木」。ガチガチに守りを固め合うのではなく、攻守のバランスを取りながら戦う、力戦型の戦法だ。藤井は「少し意外だった。できるだけ自然に指そうと思った」という。

記事後半では、朝日杯準決勝と決勝の大盤解説会の様子をノーカット動画でご覧頂けます

 駒組みが頂点に達したところから渡辺は歩を連続で突き捨てて戦端を開き、藤井は堂々と応じた。後から分かったことだが、実は細かいところで渡辺は自分の読みにない手を指されていた。別室で行われた大盤解説会でも佐藤天彦名人(31)は「渡辺さんにしては時間を使っている。意表を突かれたんじゃないですかね」と話していた。

【ノーカット】第12回朝日杯将棋オープン戦 決勝戦大盤解説

 そして迎えたのが図の局面だ。△7六歩▲8八角に続いて藤井が△3四歩と飛車取りに打ったところ。藤井はこの歩を打った瞬間、「銀を打たれたらまずい」と思った。

 それは飛車取りに飛車取りで返す▲7五銀だ。飛車を取り合うと、王手で飛車を打たれた時に、先手は▲6九歩と合駒に歩を打てるが、後手は打てない。飛車の取り合いは後手が不利なのだ。感想戦で藤井は「(先手側は)底歩が利くのが痛すぎる。ちょっと間違えてしまったかなと思いました」と振り返った。実戦は、渡辺が▲3六飛と逃げたので、藤井は△7五銀と打ち、主導権を握った。

 トップ棋士同士の対戦ではいかに自分に有利に組んで相手に力を出させないかが大事で、相撲や柔道の組み手争いに似ている。この将棋は5段目のラインをどちらが支配するかが勝敗を左右した。感想戦で藤井に▲7五銀を指摘された渡辺は「私は読めていなかったが、相手は自分が不利になる変化まで全部読んでいました」と脱帽した。前回の決勝戦では派手な手を見せた藤井だが、今回は地味な折衝でトップ棋士の読みを上回り、力を見せつけた。

 このあと藤井は、手に入れた金を3五に打ち、6三の銀を6四~5五と進出させて渡辺の防衛網を崩し、リードを拡大。最後は渡辺に粘る余地を与えず、午後4時52分、128手で押し切った。快勝だった。

 藤井は「細かいミスはいくつかあったと思うが、落ち着いて指せたかなと思う。去年に続いて結果を残すことができてうれしい」と話した。

VBAProjectのロックについて

f:id:gyokusen_since:20190208143237p:plain

手作業でロックは実現できたけど結局プログラムで実現することにした。

ところがなかなかハードルが高かった!

1.圧縮ツールのdllを登録するのに嵌った。現在のPCは殆ど64ビットOSだと思うが圧縮ツールのDLLは32ビットである。そのため登録するには%systemroot%\syswow64配下にコピーする必要がある。それを知らずに%systemroot\system32配下にコピーしたところうんともすんとも動かないどころかdllが見当たらないとか言って怒られてしまう・・・

2.バイナリファイルの編集をVBAでやる場合に今まで普通のテキストファイルしか扱ったことなかったからグーグル先生にお尋ねしまくりで実現まで結構苦労した。相変わらず配列が0オリジンでUBOUNDが配列の添え字の最大値だという認識がなかったので怒られたりした。

3.VBAのプロジェクトだけロックを掛けるためにはエクセルのたまたまの動作に依存しておりちょっと条件が違うだけでうまくかからないという難問だった。

4.アーカイブのdllが自宅のノートPCではなぜか見つからないという状態に陥り結局7za.exeという単体で動くプログラムを利用して圧縮・解凍をかけることにした。圧縮解凍のコマンドは良く調べないと解凍してもさらにフォルダがある状態になっていてちょっと嵌った。

★このプロテクト方法は手品に近いことをやる必要があり余り公開したくない・・・ 

 よってVBAProjectのロックを掛けるマクロ自身もロックを掛けた形で公開します。

項番3の部分がロック解除の調査からの試行錯誤で発見したものであり興味があるのならちょっと挑戦しても面白いかなと思います。

http://gyokusen.space.toratorawiki.net/?%E8%A9%A6%E9%A8%93%E7%9A%84%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89/%E6%9C%80%E5%BC%B7VBA%E3%83%97%E3%83%AD%E3%83%86%E3%82%AF%E3%83%88.zip&action=raw