GA将?は一時中断して"楽勝星"開発中

コンピュータ将棋ソフト「GA将」の開発日記でした。

あれ?

 LMRで「敵陣で敵の利きの無いマスに駒を打つ手は短縮しない」という修正を消したものを、sspと連続対戦させてみました。

 そしたら結果は85-0-90で勝率48.6%、95%信頼区間は41.0〜56.2。前は203-5-137でそれぞれ59.7、54.3〜65.0だったんですが、弱くなってますね。

 前との違いは連続対戦用に評価値に乱数を加算しているのと、ルートノードで合法手が1手ならすぐにそれを指すって違いだけで、後者は強さには影響しないはずですが…

 となると、「乱数加算するとやや弱くなる」って事かな? そうすると、昨日の結果は「93%の確率で強くなっている」という事らしい*1ので、ソッチの方が良い?

 とりあえず、LMRでは大駒を打ち込む手を短縮しない様にして、floodgateに投入してみます。それから、開発用マシンでは大駒+金駒に変更して連続対戦ですね。

*1:磯辺さん作 勝率検定補助ツール「tester」の結果 http://sato-www.cs.titech.ac.jp/isobe/downloads.html

ようやくAtomマシンより上に行った

 floodgateでGasyou_Atom-D510_2c4tがずっとGasyou5_Core2Duo-P8600_2cより上にいたんですが、ようやくCore2Duoの方が上に行きました。

 まぁ、稲庭スペシャルに負けまくってたから、そりゃRも低め安定になるだろうとは思いますが。

 …さて、gps500に追い付きたいけど、まだ遠いなぁ。

そろそろプログラムはFIXかな

  • ルートノードで合法手が1手だけならノータイムで指す
  • 進行度を基準とした思考時間制御
  • USIでscore mate対応
  • LMRの短縮しない条件を追加
  • Ponder…は無理かな?諦めた

 LMRで「敵陣で敵の利きの無いマスに駒を打つ手は短縮しない」って条件で、駒種を「大駒のみ」か「大駒+金駒」にするかを決めて、後はもう修正しない方向で。

 GWは今日から三連休と2日挟んで四連休なんで、もうあまり時間が無いですし。

 選手権用マシンもfloodgateでは調子良く動いてるし、荷造りさえすれば準備万端…だと思う。

あーそう言えば

 強化学習の本、布教用に選手権へ持って行こうかどうしようか悩む。

 「買うかどうか検討中だけど、高いから迷ってる」って人がいるなら持って行くんだけどなぁ。

 興味のある方、コメント貰えれば持って行くんで、よろしく。

 ちなみに、手持ちはこの二冊です*1

強化学習

強化学習

  • 作者: Richard S.Sutton,Andrew G.Barto,三上貞芳,皆川雅章
  • 出版社/メーカー: 森北出版
  • 発売日: 2000/12/01
  • メディア: 単行本(ソフトカバー)
  • 購入: 5人 クリック: 76回
  • この商品を含むブログ (29件) を見る
強くなるロボティック・ゲームプレイヤーの作り方 ~実践で学ぶ強化学習~

強くなるロボティック・ゲームプレイヤーの作り方 ~実践で学ぶ強化学習~

 

*1:他にもあるけど、布教用にはあまり向かない本なので…

対稲庭スペシャル

 http://wdoor.c.u-tokyo.ac.jp/shogi/tools/LATEST/html/current/2012-04-Gasyou5_Core2Duo-P8600_2c-InaniwaShogi_Atom-D510_1c.html

 少しは勝てる様になって来ました。今日の14:00の回からだったと思うんですが、思考時間制御をいじったバージョンを投入したら、多少マシになった感じです。

 今までは「残り時間の40分の1を1手に使う」っていう単純なルーチンだったんですが、今日は進行度ベースで制御しています。

 まず、制御の前提として進行度は0.0〜1.0の値で、初期局面で0.0、終局時に1.0でその間が一直線になる様に学習してあります。

 んで、実際の思考時間制御の流れはこんな感じ。

  1. 残り時間が2分以下なら1手1秒を上限とする。
  2. ルートノードの進行度を求める。
  3. <初期局面からルートノードまでの手数>/<進行度> を計算し、初期局面から終局までの手数の予測値を出す。
  4. 上の値を元に自分があと何手指すか計算する。この時、残り手数には多少マージン*1をとっておく。
  5. 残り思考時間を残り手数で等分した時間だけ思考する(延長・短縮は無し)。

 ものすごいイイカンゲンですが、floodgateを見る限りではそこそこちゃんと動いているみたいです。

*1:現在は2倍

選手権バージョンをFIX

 結局、LMRの短縮しない追加の条件は「敵陣かつ敵の利きの無いマスに大駒を打つ」というのがベストでした。「大駒+金駒」に変更すると対sspの勝敗が56-0-59で、ほぼ確実に弱くなってます。

 んで、他の細かい改良も終わったんで、これ以降は(バグが出ない限り)プログラムには手を付けない事にします。

 floodgateには軽いアサーションも無効にした、本当の選手権バージョンを投入予定。今pishogi戦の途中だから、それが終わってからですね。

USIエンジンをPGOで最適化

 環境はWindows 7 x64,Visual C++ 2008。

 手順は下記の通り。

  1. 将棋所で適当な条件(5分切れ負けとか)で対局。
  2. デバッグウィンドウの内容を全部テキストファイルにコピー。
  3. grepGUI→エンジンのコマンドだけ取り出し、usi_command.txtに保存。
  4. VC++でビルド→ガイド付き最適化のプロファイル→インストルメント。
  5. Visual Studio 2008 x64 Win64コマンド プロンプトを起動。
  6. gasyou5_usi.exe < usi_command.txtで、エンジンを走らせる。
  7. VC++でビルド→ガイド最適化のプロファイル→最適化。

 NPSは中盤の局面で7.5%向上。期待した程には上がってないですが、まぁちょっとでも速い方が良いんでこれで満足しときます。