ポケモン第二世代対戦シミュレータ「ジムリーダーの城」の対戦考察Wikiです。各所に散らばった考察をまとめ上げ、より考察を深めます。
履歴
「手動作成ルーチン4.0回目検証(2021年09月26日)」を追記しました。今回は気になった&たまたま時間があったので検証しましたが、手動作成ルーチンのアプローチについてこれ以上深入りするのはしんどいので、これ以上はやらないかもしれません。。
4.0回目検証を追記しました。(現在進行中です)がりゅう氏の助けを借りて、モンテカルロCFRによる分析を試みています。
議論を簡単にするため、しばらくは状態異常が絡む炎パンタンクではなく地震タンクで検証したいと思います。地震タンクの場合も炎パンタンクの場合と比べて誤差の範囲の勝率であることも確認しました。
色々体裁を整えました。また、このページで取り扱う問題を「ミルタンクカビゴン問題」と名付け、長期的に取り組むことにしました。今の手法には「ルーチンの作成を人間のエキスパートの手に頼っている」という根本的な問題があるので、もっと良い手法が無いか、AIの有識者に尋ねてみます。
「こうするとかえって勝率下がる」って表現が何回か出てくるけど、具体的にどういう条件で試して勝率がそれぞれ何%になったのか知りたい
本文中に試行ログのリンクを2つ掲載しています。ソースコードの意味がわからなくてもコメント("//"の右側の日本語)を読めばわかるようにしています。1つ目のログには具体的な%を書いてない箇所がありますが、2つ目のログではそこも補っています。2つのログを見て、わからない所があればお手数ですが再度質問お願いします。補足説明します。
例えばですけど、>試しに155にしてみたけど、カビゴン側の勝率が30%ぐらいまで落ちた。ってあるけど、155以外の他の条件はどのように設定?>捨て身の乱数圏内(77〜91)ならいくつに設定しても有意な差は無い有意な差って具体的にどれくらい?有意度検定したの?他のパラメータはどういう設定のもとで?ミルタンクの攻撃も同じように乱数圏内で検証したの?その結果は?などです。シミュレート何回かやったのはわかるんですけど、条件と結果が断片的にしか書いてないのでちゃんと検証できてるのかわからないです
まず言い訳から入ってしまって申し訳ないのですが、ルーチンを都度手動で記述している以上、検証の精度には限界があります。一人の社会人の余暇の時間を使うだけでは、ご希望に沿えるような精度の調査はできないことがあります。全ての実行ログを残すというのも手間的に難しいです。それを踏まえた上で、肝要な個所を回答します。・「試しにルーチンを調整→10000回実行→勝率が上がれば調整したルーチンを採用、上がらなければルーチンの調整を元に戻す」というのを繰り返し、ルーチンの最適化を図っています。・「77〜91」のように幅がある場合に関しては、少なくとも最小値(71)と最大値(91)とその間の数(72〜90)の内の一つは試しています。逆に言うとそれ以上は試していません。・±0.5%の差なら「有意な差はない」「誤差の範囲」としています。明確な基準があってそうしているというよりは、解説文中で小数点以下を出していない都合上そうしています。
ありがとうございます全ての値を試したのかと勘違いしていたので聞いてみてよかった。ルーチンを見直すとミルタンク側はPP切れるまで律儀に無駄技を温存し続けているのも非対称性を感じました。カビゴン側はミルタンクの回復読みを必ず成功させていますが、ミルタンク側にそうしたルーチンがありません、カビゴンがHP186以下で眠るなら、ミルタンク側もカビゴンがHP186以下かつ急所確定圏外のときは無駄技を打つ、とするべきミルタンクにとっては恩返しのPP温存が勝率に直結するからです。時間があったら検証してみてください
あ、その観点でミルタンク側のルーチンに改善の余地があるのには気付きませんでした。早速やってみました。詳しくは本文に追記した通りですが、誤差の範囲と言える差ではあるものの、「カビゴンのHPが169〜186かつカビゴンが次のターンに眠ることができるのであれば、恩返しを打たずに無駄技を打ってPPを節約する」とすることで、1%未満のレベルで勝率が改善した可能性がある結果でした。
疑わしいところが出て来たので突っ込んでみます。恐らく、全体的にミルタンク側の行動が防御的過ぎて、逆にカビゴンに試行回数を与えてしまいリスクが上がっているように見えます。ミルタンクをよく使っていた人にも聞いてみたのですが、そもそもミルタンクの勝ち筋としては、逆に急所リスクをカビを押し付けるために、攻撃回数を増やすというのが基本指針であるようです。より論理的な話をすると、まずそもそも、攻撃する判断基準が、ミルタンクが90%、カビゴンが70%と何故か異なっていて、両者の条件が不平等になっています。「元々ミルタンクが有利」というバイアスに基づいた数字になっているのではないでしょうか?ここを揃えた上でまず計算してみて、その結果、例えばミルタンク側の勝率が70%、カビゴンが30%なった場合、ミルタンクは70%以上のチャンスがあれば攻撃に移るべきだし、カビゴンはたとえ40%のチャンスしかないシーンでも、それは勝率よりも高いのでワンチャン賭けて突っ込むべきとなります。(実際に勝率n%と断言するには、このように一度の試行だけでなく、そこで導かれた勝率に基づいて、両者の判断基準の%を再設定して繰り返していく必要があると思います。そこまでは求めませんが・・・)具体的にルーチンの中身の話をすると、>先手恩返しで90%以上の確率で倒せるなら恩返しこの90%という判断は、ミルタンク側の勝率が95%とかなら正しい判断ですが、極端な話、例えばミルタンク側の勝率が元々10%とかしか無かった場合、たとえ倒せる確率が20%であっても、ワンチャンに賭けて突っ込むべきですよね。つまりこの90%というのは、無駄に悠長すぎるということになり、もっと数字を落とす必要があります。>捨て身急所で10%以上の確率で落ちるならミルク(寝言無駄技期待でHP全快狙い)これに関しても、急所かつ10%というのはあまりにも低確率を恐れすぎた防御的行動で、54%という数字からしたらみすみすチャンスを逃しています。以上のように、ミルタンク側が>余裕持たせすぎると勝率下がるこれをやってしまっている可能性があるので、もう少しミルタンク側を攻撃的な数字にして試行した結果を知りたいと思ったのですが、いかがでしょうか?
ルーチンの中身にも踏み込んだコメントありがとうございます。大変参考になります。おっしゃる通り、元々タンク側有利だろうというバイアスがかかった状態からルーチンを組んでいました。ルーチンは1回決め打ちで作ってそのままということはなく、例えば「捨て身を2発貰ったらミルク(余裕持たせすぎると勝率下がる)」というコメントの通り試行錯誤はしています。ただ、おっしゃっていることは確かにその通りだと思いますし、試行錯誤した上でタンク側54%という勝率は正直予想外に低かった(試行錯誤する前はもっと低かった)ので、試行前のバイアスを排除しきるには試行錯誤が足りていなかったと思います。爆パン・分身ケースはこのままで良いと思いますが、無害技ケース(本文中は炎パンケース)については、タンク側は思ったより有利ではない(互角近い)という前提の元、ルーチンの各所の数字を見直して後でやり直したいと思います。ひとまず、このコメントは本文中にも反映させます。重要なので。
再検証しました。ルーチン中の数値は微調整しましたが概ね最善なルーチンとなっていたことが確認でき、結果はほぼ変わらずでした。本文中に詳しく記載していますが、カビゴン・ミルタンク双方にとって攻撃に耐え切って事故待ちすることが主な勝ち筋になるので、急所圏内に入ったら回復した方が良いです。ただし、カビゴンが起きている時のミルタンク側に限っては、ミルクのPP枯渇を避けるためにある程度前のめりに殴らざるを得ません。
PBSToolsで10000回計算して検証したので、その結果を記載しました。
Stoic氏の見解が出てきたので追記しました。
寝言モード中に急所を引いた場合、寝言1回につき1/3の確率でしか復帰できない(眠るを引けない)ので、いくらなんでも50%ちょい超えということはないと思うが…70%いくかどうか怪しいラインだとは思う。
画像に記載されている文字を下のフォームに入力してください。
利用規約をご確認のうえご記入下さい
メンバーのみ編集できます
広告募集中
このページへのコメント
「手動作成ルーチン4.0回目検証(2021年09月26日)」を追記しました。
今回は気になった&たまたま時間があったので検証しましたが、手動作成ルーチンのアプローチについてこれ以上深入りするのはしんどいので、これ以上はやらないかもしれません。。
4.0回目検証を追記しました。
(現在進行中です)
がりゅう氏の助けを借りて、モンテカルロCFRによる分析を試みています。
議論を簡単にするため、しばらくは状態異常が絡む炎パンタンクではなく地震タンクで検証したいと思います。
地震タンクの場合も炎パンタンクの場合と比べて誤差の範囲の勝率であることも確認しました。
色々体裁を整えました。
また、このページで取り扱う問題を「ミルタンクカビゴン問題」と名付け、長期的に取り組むことにしました。
今の手法には「ルーチンの作成を人間のエキスパートの手に頼っている」という根本的な問題があるので、もっと良い手法が無いか、AIの有識者に尋ねてみます。
「こうするとかえって勝率下がる」って表現が何回か出てくるけど、具体的にどういう条件で試して勝率がそれぞれ何%になったのか知りたい
本文中に試行ログのリンクを2つ掲載しています。
ソースコードの意味がわからなくてもコメント("//"の右側の日本語)を読めばわかるようにしています。
1つ目のログには具体的な%を書いてない箇所がありますが、2つ目のログではそこも補っています。
2つのログを見て、わからない所があればお手数ですが再度質問お願いします。
補足説明します。
例えばですけど、
>試しに155にしてみたけど、カビゴン側の勝率が30%ぐらいまで落ちた。
ってあるけど、155以外の他の条件はどのように設定?
>捨て身の乱数圏内(77〜91)ならいくつに設定しても有意な差は無い
有意な差って具体的にどれくらい?有意度検定したの?
他のパラメータはどういう設定のもとで?
ミルタンクの攻撃も同じように乱数圏内で検証したの?その結果は?
などです。
シミュレート何回かやったのはわかるんですけど、条件と結果が断片的にしか書いてないのでちゃんと検証できてるのかわからないです
まず言い訳から入ってしまって申し訳ないのですが、ルーチンを都度手動で記述している以上、検証の精度には限界があります。
一人の社会人の余暇の時間を使うだけでは、ご希望に沿えるような精度の調査はできないことがあります。
全ての実行ログを残すというのも手間的に難しいです。
それを踏まえた上で、肝要な個所を回答します。
・「試しにルーチンを調整→10000回実行→勝率が上がれば調整したルーチンを採用、上がらなければルーチンの調整を元に戻す」というのを繰り返し、ルーチンの最適化を図っています。
・「77〜91」のように幅がある場合に関しては、少なくとも最小値(71)と最大値(91)とその間の数(72〜90)の内の一つは試しています。逆に言うとそれ以上は試していません。
・±0.5%の差なら「有意な差はない」「誤差の範囲」としています。明確な基準があってそうしているというよりは、解説文中で小数点以下を出していない都合上そうしています。
ありがとうございます
全ての値を試したのかと勘違いしていたので聞いてみてよかった。
ルーチンを見直すとミルタンク側はPP切れるまで律儀に無駄技を温存し続けているのも非対称性を感じました。
カビゴン側はミルタンクの回復読みを必ず成功させていますが、ミルタンク側にそうしたルーチンがありません、カビゴンがHP186以下で眠るなら、ミルタンク側もカビゴンがHP186以下かつ急所確定圏外のときは無駄技を打つ、とするべき
ミルタンクにとっては恩返しのPP温存が勝率に直結するからです。
時間があったら検証してみてください
あ、その観点でミルタンク側のルーチンに改善の余地があるのには気付きませんでした。
早速やってみました。
詳しくは本文に追記した通りですが、誤差の範囲と言える差ではあるものの、「カビゴンのHPが169〜186かつカビゴンが次のターンに眠ることができるのであれば、恩返しを打たずに無駄技を打ってPPを節約する」とすることで、1%未満のレベルで勝率が改善した可能性がある結果でした。
疑わしいところが出て来たので突っ込んでみます。
恐らく、全体的にミルタンク側の行動が防御的過ぎて、
逆にカビゴンに試行回数を与えてしまいリスクが上がっているように見えます。
ミルタンクをよく使っていた人にも聞いてみたのですが、
そもそもミルタンクの勝ち筋としては、逆に急所リスクをカビを押し付けるために、
攻撃回数を増やすというのが基本指針であるようです。
より論理的な話をすると、
まずそもそも、攻撃する判断基準が、ミルタンクが90%、カビゴンが70%と何故か異なっていて、
両者の条件が不平等になっています。
「元々ミルタンクが有利」というバイアスに基づいた数字になっているのではないでしょうか?
ここを揃えた上でまず計算してみて、その結果、例えばミルタンク側の勝率が70%、カビゴンが30%なった場合、
ミルタンクは70%以上のチャンスがあれば攻撃に移るべきだし、
カビゴンはたとえ40%のチャンスしかないシーンでも、それは勝率よりも高いのでワンチャン賭けて突っ込むべきとなります。
(実際に勝率n%と断言するには、このように一度の試行だけでなく、そこで導かれた勝率に基づいて、
両者の判断基準の%を再設定して繰り返していく必要があると思います。そこまでは求めませんが・・・)
具体的にルーチンの中身の話をすると、
>先手恩返しで90%以上の確率で倒せるなら恩返し
この90%という判断は、ミルタンク側の勝率が95%とかなら正しい判断ですが、
極端な話、例えばミルタンク側の勝率が元々10%とかしか無かった場合、
たとえ倒せる確率が20%であっても、ワンチャンに賭けて突っ込むべきですよね。
つまりこの90%というのは、無駄に悠長すぎるということになり、もっと数字を落とす必要があります。
>捨て身急所で10%以上の確率で落ちるならミルク(寝言無駄技期待でHP全快狙い)
これに関しても、急所かつ10%というのはあまりにも低確率を恐れすぎた防御的行動で、
54%という数字からしたらみすみすチャンスを逃しています。
以上のように、ミルタンク側が
>余裕持たせすぎると勝率下がる
これをやってしまっている可能性があるので、
もう少しミルタンク側を攻撃的な数字にして試行した結果を知りたいと思ったのですが、
いかがでしょうか?
ルーチンの中身にも踏み込んだコメントありがとうございます。大変参考になります。
おっしゃる通り、元々タンク側有利だろうというバイアスがかかった状態からルーチンを組んでいました。
ルーチンは1回決め打ちで作ってそのままということはなく、例えば「捨て身を2発貰ったらミルク(余裕持たせすぎると勝率下がる)」というコメントの通り試行錯誤はしています。
ただ、おっしゃっていることは確かにその通りだと思いますし、試行錯誤した上でタンク側54%という勝率は正直予想外に低かった(試行錯誤する前はもっと低かった)ので、試行前のバイアスを排除しきるには試行錯誤が足りていなかったと思います。
爆パン・分身ケースはこのままで良いと思いますが、無害技ケース(本文中は炎パンケース)については、タンク側は思ったより有利ではない(互角近い)という前提の元、ルーチンの各所の数字を見直して後でやり直したいと思います。
ひとまず、このコメントは本文中にも反映させます。重要なので。
再検証しました。
ルーチン中の数値は微調整しましたが概ね最善なルーチンとなっていたことが確認でき、結果はほぼ変わらずでした。
本文中に詳しく記載していますが、カビゴン・ミルタンク双方にとって攻撃に耐え切って事故待ちすることが主な勝ち筋になるので、急所圏内に入ったら回復した方が良いです。
ただし、カビゴンが起きている時のミルタンク側に限っては、ミルクのPP枯渇を避けるためにある程度前のめりに殴らざるを得ません。
PBSToolsで10000回計算して検証したので、その結果を記載しました。
Stoic氏の見解が出てきたので追記しました。
寝言モード中に急所を引いた場合、寝言1回につき1/3の確率でしか復帰できない(眠るを引けない)ので、いくらなんでも50%ちょい超えということはないと思うが…70%いくかどうか怪しいラインだとは思う。