ポケモン第二世代対戦シミュレータ「ジムリーダーの城」の対戦考察Wikiです。各所に散らばった考察をまとめ上げ、より考察を深めます。

はじめに

2018〜2019年に議論になっていた問題です。
題名は当時の議論が行われていた時につけたものですが、当ページの趣旨としては「55鈍いタンク 対 55鈍い寝言カビ のタイマン勝率の計算」になっています。

この問題は、ニンテンドウカップ2000におけるタイマン勝率の議論で最も熱く議論されている問題であり、簡単に回答を出せる問題でもないので、「ミルタンクカビゴン問題」と名付けて長期的に扱っていくことにします。

なお、今回の問題は環境差異(GB・VC、ポケスタ、PBS)を考えなくて良い問題であるため、「PBSTools」の代わりに「Pokemon Showdown!」を使用して検証したとしてもほとんど支障ありません。
(ただし、「Pokemon Showdown!」の場合、80ターン経過時点のHP割合の判定について別途確認・考慮が必要になります)

2018〜2019年当時の議論

手動作成ルーチン初回検証(2020年11月23日)

ここに出てくるミルタンク(電磁砲タンク)とカビゴンは以下の型を指しています。
55ミルタンクおんがえしでんじほうのろいミルクのみみずたまリボンFFFF63-63-63-63-63
55カビゴンすてみタックルのろいねごとねむるたべのこしFFFF63-63-63-63-63

ミルタンク側には下記のリスクがあります。
  • 回復技を考慮しない素の殴り合いではミルタンクはカビゴンに負ける(ミルタンク側は確4、カビゴン側は確3)
  • 捨て身タックルのPP>ミルク飲みのPPなので、捨て身タックル1発もらうたびにミルク飲みを使うとミルク飲みのPPが切れる
  • 捨て身タックルで確3なので、PP切れを気にしてミルク飲みを使うターンを間引くと急所で倒れる可能性がある
  • 寝言相手に急所待ちなので、タイミング良く急所を引けず恩返しのPPが切れる可能性がある(その場合、カビゴンに最終ターン後攻眠るで引き分け以上(80ターン経過時点のHP割合の判定で互角かカビゴン有利)にされる)

この件について、PBSToolsで10000回計算して検証しました。
ターン制限について、今回の検証では、大爆発等により、残り75ターンを残した時点でミルタンク対カビゴンの完全なタイマン(お互いにHP・PP・状態異常が全快の状態でのタイマン)になったと想定しています。
ミルタンクについては、炎パンタンク(「でんじほう」を「ほのおのパンチ」に変更)、爆パンタンク(「でんじほう」を「ばくれつパンチ」に変更)、分身タンク(「でんじほう」を「かげぶんしん」に変更)についても検証しました。
カビゴンの型は固定です。

検証結果は以下の通りです。
(詳細:https://image02.seesaawiki.jp/p/d/pbs-thread/GFUvE...
  • 炎パンタンク
    • ミルタンク側の勝率は約54%、カビゴン側の勝率は約46%、引き分けは無し(約60ターンを超える長期戦になればカビゴンの勝ち)。
    • 炎のパンチは(カビゴンにとって)無害な技の代表として選択。ルーチン上は恩返し鈍いミルク飲みのみを当てにして戦う。
  • 電磁砲タンク
    • ミルタンク側の勝率は約50%、カビゴン側の勝率は約50%、引き分けは無し(約60ターンを超える長期戦になればカビゴンの勝ち)。
    • 上記は電磁砲を当てにした場合の勝率。炎パンタンクの勝率を考えると、電磁砲は当てにしない方が良く、そのことを知っていれば炎パンタンクと同等の勝率と考えて良い。
  • 爆パンタンク
    • ミルタンク側の勝率は約74%、カビゴン側の勝率は約26%、引き分けは無し(約60ターンを超える長期戦になればカビゴンの勝ち)。
    • 混乱自滅により、急所を引かれて倒されるリスクも寝言で粘られて倒しきれないリスクも減らすことができる。
  • 分身タンク
    • ミルタンク側の勝率は約69%、カビゴン側の勝率は約10%、引き分けの確率は約21%。
    • 分身により、急所を引かれて倒されるリスクやミルク飲みのPPが切れるリスクを減らすことができる。
    • 恩返しで倒しきれなかったとしても、最終ターン後攻眠るに対してミルク飲みで引き分けに持ち込むことができる。

なお、今回はプログラムでの検証はしていませんが、カビゴンの型については以下のことが言えると考えています。
  • 爆裂パンチ(ミルク飲みで粘り切れなくなる)や電磁砲(麻痺で急所待ちが困難になる+捨て身タックルで倒されやすくなる)といった、ミルタンクにとって有害な技を寝言の代わりに持たれている場合は、ミルタンク側の勝率は上記よりも低下する。
  • 逆に、寝言の代わりに地震等のミルタンクにとって無害な技を持たれている場合は、ミルタンク側の勝率は上記よりも向上すると思われる。
  • 雷や火炎放射は、寝言と同じく有害と無害の中間と思われる。

手動作成ルーチン2回目検証(2021年01月02日)

2〜3.0回目検証では、以下の型のミルタンク・カビゴンに焦点を当てることにします。
(ミルタンクの型については「炎パンタンク」と呼ぶことにします)
55ミルタンクおんがえしほのおのパンチのろいミルクのみみずたまリボンFFFF63-63-63-63-63
55カビゴンすてみタックルのろいねごとねむるたべのこしFFFF63-63-63-63-63

炎パンタンクのケースについては、当ページのコメントで下記のような疑問が呈されました。


疑問を確認するため、炎パンタンクのケースをPBSToolsで再検証した結果は下記です。
ルーチン中で決め打ちしていた数値(行動選択の基準とするHPの値)は微調整しましたが、概ね最善なルーチンとなっていたことが確認できました。
また、勝率が変化した理由を調べることで、疑問に対する回答も用意できました。
(詳細:https://image01.seesaawiki.jp/p/d/pbs-thread/LW8Un...
  • 炎パンタンク
    • ミルタンク側の勝率は約54%、カビゴン側の勝率は約46%、引き分けは無し。
    • カビゴン側・ミルタンク側双方にとって相手の攻撃に耐え切って事故待ちすることが主な勝ち筋になるため、急所も考慮した上で早めに回復するのが最善となる。
      • ただし、カビゴンが起きている時のミルタンク側については、早め早めの回復を心がけると捨て身タックルを連打されてミルク飲みのPPが枯渇してしまう。そのため、ある程度攻めざるを得ない。目安としては、捨て身を2発食らった段階(HPが128以下になった段階)でミルク飲みで回復するのが良い。
      • カビゴンが眠ったら、ミルタンク側は捨て身急所圏外まで回復した方が良い。ここで無理に事故らせようとすると、寝言で発生する捨て身タックルでの急所で逆に事故ってしまい、勝率が逆転しかねない。

手動作成ルーチン3.0回目検証(2021年01月24日)

炎パンタンクのケースについては、当ページのコメントでミルタンク側のルーチンについて指摘がありました。


ルーチンの不備によりミルタンク側の勝率が低く出てしまっている可能性があるので、指摘に対応したルーチンで試してみました。
誤差の影響をなるべく減らすため、PBSToolsでの試行回数は普段の10倍の100000回としています。
結果としては、誤差の範囲でしか変わらないと判断しましたが、1%未満のレベルで勝率が改善した可能性があります。

カビゴンのHPが156〜186の時は急所が出ても確定では倒せないので、カビゴンが次のターンに眠ることができるのであれば、眠る読みで無駄技打ってPPを節約するべきではないか、という指摘でした。
しかし、この条件では、誤差の範囲を超える差はありませんでした。
PPを節約できるのはご指摘の通りですが、カビゴンのHPが156〜186であれば恩返し急所が出れば乱数で突破のワンチャンに期待でき、その意味ではワンチャンを狙うタイミングが後回しになる(先にカビゴンに捨て身タックル急所のワンチャンを拾われる可能性が高くなる)ので、逆効果にもなり得ます。
カビゴンのHPが156〜186の時という局所的なケースでしかルーチン変更の影響がないというのも、差が出ない理由かもしれません。

急所が出れば高確率で倒せる時は恩返しでワンチャンを狙うように、156ではなく169(急所が出た時の中間値)でも試しました。
それでも結果としてはミルタンク側の勝率が54.44%なので、誤差の範囲と捉えることができます。
しかし、普段の10倍の試行回数で54.5%に近い結果が出ているので、もしかしたら1%未満のレベルで勝率が改善しているのかもしれません。
(詳細:https://image02.seesaawiki.jp/p/d/pbs-thread/m4KOV... 「再々検証1」では「156」のケース、「再々検証2」では「169」のケースを試行)

なお、コメントでも言及されていますが、眠る読み無駄技が電磁砲の場合、麻痺痺れに期待できる分、勝率が向上する可能性があります。

手動作成ルーチン3.5回目検証(2021年04月04日)

状態異常の考慮を一旦外して議論を簡単にするため、しばらくの間は無駄技に「じしん」を採用したミルタンクで検証しようと思います。
55ミルタンクおんがえしじしんのろいミルクのみみずたまリボンFFFF63-63-63-63-63
55カビゴンすてみタックルのろいねごとねむるたべのこしFFFF63-63-63-63-63

PBSToolsを使用して最新のルーチンで100000回試行して再検証した結果は以下です。
https://image02.seesaawiki.jp/p/d/pbs-thread/JOTZL...

炎パンタンクの勝率と比べると誤差の範囲の勝率(54.25%)となっていますが、引き分けが発生するようになりました(0.55%)。
炎パンタンクの場合にはPPが尽きた後に炎パン火傷で勝ちを拾っていたのに対し、地震タンクの場合にはそれができずに引き分けになっているものだと思われます。
仮に、炎パンタンクの場合なら引き分けの分が全てタンク側の勝利になると仮定しても、勝率は誤差の範囲です。

手動作成ルーチン4.0回目検証(2021年09月26日)

3.5回目までのルーチンではカビゴンとミルタンクが共に初手から鈍い6積みしていましたが、カビゴンについては下記の議論の通り5回が最善の可能性が出てきました。

議論(Discord「金銀対戦プレイヤーの集い」サーバーより引用)


そこで、カビゴンの鈍いを積む回数を5回にしたルーチンを作成し、100000回試行し、再検証しました。
その結果、カビゴンの勝率が45.20%から43.14%へ低下しました。
https://image02.seesaawiki.jp/p/d/pbs-thread/gkP2K...

カビゴンの勝率が約2%低下した理由としては、下記の理由が考えられます。
  • 確かに、カビゴンの鈍いを積む回数を減らすことで先に急所を試行できるようになるが、カビゴンの防御力が低下することによりミルタンクに1回殴られただけで眠らなければならないライン(恩返し急所+恩返し通常命中で落ちるライン)に到達してしまい、後々のターンまで考えると決して急所を試行しやすくなるとは言えない。
    • サンプルログ:https://image01.seesaawiki.jp/p/d/pbs-thread/wVR8q...
    • これまでの検証から、眠るタイミングを遅らせるとカビゴン側の勝率が低下することは確認済み。粘り切って恩返しのPP切れを狙うのもカビゴン側の有力な勝ち筋の一つである。
  • 鈍い6回なら耐えるが鈍い5回なら耐えないというケースがあり、例えばカビゴンのHPが満タンの状態から「恩返し急所、捨て身、残飯回復→恩返し通常、(眠る)」となった場合、最初から鈍いを6回積んでいたなら235〜280/292のダメージで確定で耐えて眠ることができるが、鈍いを5回しか積んでいなかった場合は266〜317/292のダメージとなり乱数次第で倒れてしまう。寝言で鈍いが出れば鈍い6回になる(鈍い5回のまま戦うターンは限定的)ということも考えると細かい問題ではあるが、こうした細かい問題がカビゴンの粘り勝ちの確率を減らしている。

モンテカルロCFR初回検証(2021年04月04日)

人間によるルーチンの試行錯誤に限界を感じたので、AIによる分析を行っているがりゅう氏に助けを求めました。
ミルタンクカビゴン問題に対して、モンテカルロCFRによる分析を試みることにしました。
https://shingaryu.hatenablog.com/entry/2021/02/07/...

まずは、試しに10000回試行しました。
試行結果と今後の展望は以下の通りです。
(Discord「金銀対戦プレイヤーの集い」サーバーより引用)

試行結果と展望

このページへのコメント

「手動作成ルーチン4.0回目検証(2021年09月26日)」を追記しました。
今回は気になった&たまたま時間があったので検証しましたが、手動作成ルーチンのアプローチについてこれ以上深入りするのはしんどいので、これ以上はやらないかもしれません。。

0
Posted by  nanashi_a nanashi_a 2021年09月27日(月) 00:05:47 返信

4.0回目検証を追記しました。
(現在進行中です)

がりゅう氏の助けを借りて、モンテカルロCFRによる分析を試みています。

0
Posted by  nanashi_a nanashi_a 2021年04月04日(日) 17:05:07 返信

議論を簡単にするため、しばらくは状態異常が絡む炎パンタンクではなく地震タンクで検証したいと思います。
地震タンクの場合も炎パンタンクの場合と比べて誤差の範囲の勝率であることも確認しました。

0
Posted by  nanashi_a nanashi_a 2021年04月04日(日) 10:15:00 返信

色々体裁を整えました。
また、このページで取り扱う問題を「ミルタンクカビゴン問題」と名付け、長期的に取り組むことにしました。

今の手法には「ルーチンの作成を人間のエキスパートの手に頼っている」という根本的な問題があるので、もっと良い手法が無いか、AIの有識者に尋ねてみます。

0
Posted by  nanashi_a nanashi_a 2021年03月25日(木) 23:10:59 返信

「こうするとかえって勝率下がる」って表現が何回か出てくるけど、具体的にどういう条件で試して勝率がそれぞれ何%になったのか知りたい

0
Posted by 名無し 2021年01月22日(金) 11:48:30 返信数(7) 返信

本文中に試行ログのリンクを2つ掲載しています。
ソースコードの意味がわからなくてもコメント("//"の右側の日本語)を読めばわかるようにしています。
1つ目のログには具体的な%を書いてない箇所がありますが、2つ目のログではそこも補っています。

2つのログを見て、わからない所があればお手数ですが再度質問お願いします。
補足説明します。

0
Posted by  nanashi_a nanashi_a 2021年01月22日(金) 12:42:43

例えばですけど、
>試しに155にしてみたけど、カビゴン側の勝率が30%ぐらいまで落ちた。
ってあるけど、155以外の他の条件はどのように設定?

>捨て身の乱数圏内(77〜91)ならいくつに設定しても有意な差は無い
有意な差って具体的にどれくらい?有意度検定したの?
他のパラメータはどういう設定のもとで?
ミルタンクの攻撃も同じように乱数圏内で検証したの?その結果は?
などです。

シミュレート何回かやったのはわかるんですけど、条件と結果が断片的にしか書いてないのでちゃんと検証できてるのかわからないです

0
Posted by 名無し 2021年01月22日(金) 13:33:52

まず言い訳から入ってしまって申し訳ないのですが、ルーチンを都度手動で記述している以上、検証の精度には限界があります。
一人の社会人の余暇の時間を使うだけでは、ご希望に沿えるような精度の調査はできないことがあります。
全ての実行ログを残すというのも手間的に難しいです。

それを踏まえた上で、肝要な個所を回答します。
・「試しにルーチンを調整→10000回実行→勝率が上がれば調整したルーチンを採用、上がらなければルーチンの調整を元に戻す」というのを繰り返し、ルーチンの最適化を図っています。
・「77〜91」のように幅がある場合に関しては、少なくとも最小値(71)と最大値(91)とその間の数(72〜90)の内の一つは試しています。逆に言うとそれ以上は試していません。
・±0.5%の差なら「有意な差はない」「誤差の範囲」としています。明確な基準があってそうしているというよりは、解説文中で小数点以下を出していない都合上そうしています。

0
Posted by  nanashi_a nanashi_a 2021年01月23日(土) 00:08:25

ありがとうございます
全ての値を試したのかと勘違いしていたので聞いてみてよかった。

ルーチンを見直すとミルタンク側はPP切れるまで律儀に無駄技を温存し続けているのも非対称性を感じました。
カビゴン側はミルタンクの回復読みを必ず成功させていますが、ミルタンク側にそうしたルーチンがありません、カビゴンがHP186以下で眠るなら、ミルタンク側もカビゴンがHP186以下かつ急所確定圏外のときは無駄技を打つ、とするべき
ミルタンクにとっては恩返しのPP温存が勝率に直結するからです。
時間があったら検証してみてください

0
Posted by 名無し 2021年01月24日(日) 02:08:49

あ、その観点でミルタンク側のルーチンに改善の余地があるのには気付きませんでした。
早速やってみました。

詳しくは本文に追記した通りですが、誤差の範囲と言える差ではあるものの、「カビゴンのHPが169〜186かつカビゴンが次のターンに眠ることができるのであれば、恩返しを打たずに無駄技を打ってPPを節約する」とすることで、1%未満のレベルで勝率が改善した可能性がある結果でした。

0
Posted by  nanashi_a nanashi_a 2021年01月24日(日) 07:35:46

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

メニュー

メニューバー

メンバーのみ編集できます