MonkeySolverを使ってみた感想、メモとか
先月、名前に親近感を覚えて買いました。オープンリンプレンジを計算させたり、Pushレンジを計算させたりして遊んでいます。
使い方を見せるのが目的なので、極端に簡単なツリーを作っています。メモ書きみたいなものだから雑な説明でもゆるしてね。
・ツリーを作る
TreeタブのNewを押すと、新しくツリーが作成されます。
この画面でゲームの種類とどのストリートから計算を始めるか設定出来ます。ゲームはホールデム、Omaha、Omaha8の3種類です。
次にスタックとデッドマネーを設定します。デッドマネーはアンティの事ですね。OKを押すとブラインドを1/2でツリーを作成します。CustomBlindsを押すとブラインドを設定出来ます。
単位は0.1です。上記だと10/25になります。
やりたい人が居るかは分かりませんが、100,250,500と打てばストラドルが出来ますし、0,0,0,100等と入れれば任意のポジションにブラインドを置けます。
To actはどのポジションからアクションを始めるかを指定するみたいです。
0がBTN、1がSB、2がBBです。CO以前は-1等と指定します。
これでツリーが出来ました。細かく設定してみましょう。
右下のアクションから好みのアクションにチェックを入れ、Addをクリックします。複数のアクションを同時に入れる事も出来ます。
実行出来ないアクションはツリーに入らない…と言いたいのですが、ミニレイズに満たないサイズのレイズは入れる事が出来てしまいます。計算もしてくれます。無駄なメモリを使わないよう注意しましょう。
Edit:クリックしたアクションを編集出来ます。例えばPotBetに設定したアクションを75%Betに変更出来ます。
Remove:クリックしたアクションを削除します。
Remove all:選択したツリーより下の指定したアクションをすべて削除します。例えばSPRの高い場面で、ALLIN(実質600%Betなど)の選択肢を一括で削除出来ます。
一つ一つ入れるのが面倒だ!という方にはAdd to Allというオプションがあります。4つの選択肢があり
PreFlopNodes:選択したツリーより下の全てのプリフロップツリーに選択したアクションを入れる
PostflopNodes:選択したツリーより下の全てのポストフロップツリーに選択したアクションを入れる。ドンクもする。
PostflopNodes w/oDonk:選択したツリーより下の全てのポストフロップツリーに選択したアクションを入れる。ドンクはしない。
Custom Filter:(2020/05/14追記)指定したアクションを一括で入れる機能のようです。セーブすれば指定した設定を使いまわせます。
Actions:ベットサイズを入力します。%固定です。区切り方にも意味があり、,で区切ると複数のベットサイズを指定でき、;で区切るとレイズサイズを指定出来ます。例文を貼っておきます。
複数サイズのベットを打つ: 25,50,100;
複数サイズのベットとレイズを打つ:25,50,100
指定サイズのベット、に指定サイズのレイズを打つ:50;130
複数サイズのベットを打ち、それに対して指定サイズのレイズを打つ:40,100;130
Exclude:除外するアクションを選択します。例えば、プリフロップのみのアクションを設定したい場合はFlop,Turn,Riverのアクションをチェックします。ポストフロップの設定をする場合、ドンクをしたくない場合はDonkbetsにチェックを入れましょう。
ColdCall:後ろに何人以上残っている場合はコールドコールをしないかを設定出来ます。全員にコールの選択肢を与える場合は0、横からCallしてほしくない場合は1にしておけば問題無いです。
>2Players:マルチウェイの時にアクションを追加しない場合はチェックを入れます。
2players:ヘッズアップの時にアクションを追加しない場合はチェックを入れます。
Players:ここで指定したプレイヤーが関わるアクションを追加しないようにします。BBが2、SBが1、BTNは0、CO以前は-1以前です。例えば「1,2」と入力するとSB、BBが関わるアクションを除外出来ます。(これを使用すると、IPの3BetサイズとOOPの3Betサイズを区別したり出来ます。)
Player Count:よく分かりませんが、多分使わないと思います。
Bet Cap:何回までベット/レイズを行うか設定出来ます。これを設定しないと小さいサイズのレイズを設定した場合、延々と小さいサイズのレイズを行えてしまいます。特にポストフロップの設定では、メモリツリーを節約するためにも3Bet辺りで止めるべきでしょう。
Min/MaxSTPR 最低/最高SPRサイズを設定出来ます。なぜSTPRと言うのか、このスタッツの使い道は分かりません。
これらを使う事でより手軽にツリーを作成出来ます。
それも面倒だ!という方はAutoにチェックを入れると、勝手にツリーを作ってくれますが、正直使い勝手が悪いので自分で打ち込んだ方が良いでしょう。
納得出来るツリーが完成したら、ツリーを保存しましょう。Saveボタンを押すとツリーをセーブ出来ます。これでいつでもツリーを呼び出せます。ツリーは下記に保存されています。
C:\MonkerSolver\trees
(2020/05/14追記)ツリーのサンプルを準備しました。これを上記のアドレスに放り込めば計算を始める事が出来ます。
・計算に関わる設定 レーキなど
ツリーを作るなり呼び出すなりしたら、Settingタブを確認します。
中央の赤色で囲ったメモリの数字が、(計算に使用するメモリ/計算に使えるメモリ)です。
注意して欲しいのは、画面に表示されているメモリ上限はソルバーで勝手に決めている分です。例えば、8GBのPCでも28GBと表示されますが、画面上は問題無くてもPCのメモリを超えるとエラーを吐きます。多分積んでるメモリの75%位が使える上限だと思うので、その辺で各自で限界を探してください。
他にも計算に影響する設定で今知っている所だけ書きます。
Keep avg strategy on(streets),Keep EV on(streets):EVを複数のストリートに跨って計算するかを決めてます。1~4までで、初期設定は1です。プリフロップレンジを出したい時は4を強く推奨します。
Threads:PCのコアの事らしいです。ここの数字を上下させると計算速度が変わります。基本は限界まで上げればいいと思いますが、ここを下げるとソルバーを多面打ちする事が出来ます。
Default saved run folder::計算結果を保存する場所を指定出来ます。初期設定ではC:\MonkerSolver\savedRunsに保存されています。HDDに直接保存したい時はここから変えましょう。
Rake,Rakecap:ポットレーキを設定出来ます。キャップの単位はミリチップです。例えば5/10で1bbCapにしたい場合は10000と入力します。
(2020/03/25追記:オープンに対してBB以外は3Bet or Fold、3Betに横からコールのオプションを無くし、ツリーを単純にし、一部ツリー(6MaxのUTGOpenのみ計算する、等)を切り離して計算する事で10GB位のメモリで計算出来ます。実用的かは僕には分かりませんが…)
Abstraction_Buckets,Texture:多分どこまで深く計算するかを設定してます。Large辺りからメモリの要求量がえげつなくなるので、基本はSmallにして余裕があれば足す感じでいいと思います。
2019/11/17追記
Bucketsやtextureについての説明らしきものが公式サイトにありました。(Google翻訳使って読みました。ありがとうGoogle!)
どうやら同じ種類のハンドをまとめて計算する事で、ゲームツリーを小さくしているらしいです。ただし完璧に計算した時に比べると若干エラーが出るようですね。まあそのエラーを気にするレベルになる頃にはポーカーの手札が7枚になってるのでそこまで気にする必要はなさそうです。
Bucketsの値は15~30を推奨していました。
設定が完了したらRunを押してスタートします。
・実際に計算している様子
計算が開始すると、このような画面になります。メモリが足りないと1分程フリーズした後エラーメッセージが出るので、設定をやり直して下さい。
(2020/01/25追記)また、計算中はNodelockが可能です。ハンド表を右クリックするとメニューが出てくるのですが、その中の「Lock xx(アクション) form chart」という選択肢をクリックすると、下記の表が出てきます。
指定したいハンドをクリックすると白→青に変化するので、青色にしてやればOKです。あとはソルバーが勝手に再計算してくれます。
(2020/03/25追記)nodelockした後もnodelockする前の戦略を参照しているようで、十分に計算させた後に極端なnodelockを行うと、計算に時間がかかる上に疑問が残るレンジを提示される事があります(バブルでのプリフロップPush or Foldの計算で確認)。極端なnodelockをする場合は計算を一度止めて、再計算を始めた直後にnodelockすると若干時間の短縮になると思います。
公式サイトによると、Iterationsの数字がNodesの数字の10倍を超えるといい感じの計算になるらしいです。適当なところで止めましょう。
(2020/08/13)厳密に計算したい場合は100倍程度回すと良いです。10倍でもある程度参考になりますが、BBディフェンスレンジを中心に割と怪しい印象があります。EV0が0に近いハンドも知りたいのであれば100倍以上回した方が良いでしょう。
計算結果が出てきました。左下のResponsesボタンでプレイヤーの次のアクションを選択出来ます。ポストフロップも設定してあるなら、フロップ以降のアクションも確認出来ます。
上のALLINやFoldと書かれているタブを押すと、レンジが出てきます。
ハンドをクリックするとレンジを加工出来ます。
また、Saveを押すとハンドレンジを保存する事が出来ます。Pioにも貼り付け出来るので便利です。
Runの2つ隣にあるフロッピーディスクをクリックすると、計算結果を保存する事が出来ます。
左がでっかいので右がちっさいのです。違いはよく分からないので僕は両方保存してます。Save asを選択すると名前を指定して保存出来ます。
おめでとう!これで僕らはモンキーソルバーで計算出来るようになったぞ!
大きいメモリを使ってる方向け
俺は256GBのメモリを積んでるんだ!もっと使わせろ!という方は下記の設定を変えましょう。
C:\MonkerSolver\MonkerSolver.l4jを開きます。
-Xmx30g
-Dsun.java2d.d3d=false
-Dsun.java2d.uiScale=1.0
と書かれています。-Xmx30gの数字の部分を変更すると、MonkeySolver上で使えるメモリの上限が増えます。ただし、PCのメモリを考えないと、計算を始めた時にメモリーオーバーでエラーを吐くので気を付けましょう。
サポートは運に恵まれない下振れプレイヤーの補填へ当てられます。サポートは下振れないのですごいと思います。ものすごく助かります。