【ポケモンGO】ジムバトルにおける最適パーティを最短経路問題で考えます【バトルチーム】

(2023年5月28日追記) 最適ジム防衛パーティを最短経路問題で考察しました!
(2023年6月17日追記) 単騎ジムアタッカーおすすめランキング!【ポケモンGO】

ごごちと申します。

これまではポケモンGOのジム防衛に関する記事を
いくつか書いてきました。
【頑丈&長持ち】誰も知らないジム防衛おすすめポケモン3選!【ポケモンGO】【ジム防衛】
【ジム防衛】防衛ポケモンの集計とおすすめ評価ランキング!【ポケモンGO】

今回は、ジムバトルを攻撃側の視点から考えます。
ジムバトルを短時間で攻略できるパーティを最短経路問題で考えたいと思います。

(2024年5月5日追記) 格闘タイプ最強を考察しました!

かくとうタイプでジムバトルするときの
最適ポケモンの考察動画を作成しました!

シャドウカイリキー、ルカリオ、
ローブシン、テラキオン

の4匹を比較しています!

ジムバトルについて

ポケモンGOのジムバトルでは
相手チームが重複なしの6匹に対して、
こちらのジムバトルチーム6匹を繰り出し、
1対1の勝ち抜き形式でバトルを行います。

ジムバトルに勝利しジムを占領することで、
ポケコインという課金アイテムが手に入ります。

今は1ポケコイン=1.6円であり、
一日50ポケコイン=80円までは手に入るので、
地味ですが小遣い稼ぎになります。

ポケモンGOにおいて、
ジムバトルおよびジム防衛は
ユーザーの財布を助けるという意味で
重要な要素といえます。

今回は、そんなジムバトルで
最短時間で勝利するための
最適パーティを計算によって導き出しました!

結論から紹介!最適バトルパーティ!

  • ルカリオ
  • フェローチェ
  • デンジュモク
  • マンムー
  • レシラム
  • (自由枠)

以上が計算から導き出された
最適ジムバトルチームです。

見慣れないポケモンもいるかと思いますが、
計算仮定の元での結果ですのでご了承ください。

注目して頂きたいのはポケモンのタイプの特徴です。
最適バトルチームにはタイプの特徴がみてとれます。
わかりやすくするために、
・必須タイプ1
・必須タイプ2
・その他
に分けて考えます。

必須タイプ1

ジム置き可能なポケモンの中で
最高の耐久力を誇るハピナス&ラッキーを
最短で倒せるかくとうタイプは必須です。

今回はルカリオがピックアップされています。

ハピナス、ラッキーの討伐時間は
他のポケモンよりも長いので、
これらを短時間で倒せるかくとうタイプが重要です。

必須タイプ2

かくとうタイプに耐性のあるタイプ
(=エスパー, ひこう,フェアリー)
に対して弱点を突ける、
以下の7タイプが必須タイプ2です。
・あく
・むし
・ゴースト
・でんき
・こおり
・いわ
・はがね

今回は、
・ソーナンス(エスパー)に対してフェローチェ(むし)
・トゲキッス(ひこう)に対してデンジュモク(でんき)
・カイリュー(ドラゴンひこう)に対してマンムー(こおり)
がピックアップされています。

ソーナンスに対してフェローチェは
筆者にとっても意外でしたが、
ゲンガーやダークライでも1秒差ぐらいなので
これらで代用しても良いと思います。

その他(自由枠)

必須タイプ1および2で
弱点が突けないタイプのポケモンに対して
有効なタイプのポケモンを選びます。
この最後の枠はある程度自由度があります。

想定防衛パーティのメタグロス(はがね)に対して、
レシラム(ほのお)がピックアップされています。

基本的に必須タイプ1と必須タイプ2で、
どの防衛ポケモンに対しても等倍以上がとれるので、
他のタイプはある程度自由に決めて良いと思います。
筆者はかくとうタイプを追加で入れています。

対戦数稼ぎのために好きなポケモンを
加えても良いでしょう。

今回の計算における仮定

計算を単純に行うために、3つの仮定を立てました。

仮定1 : 相手パーティ6匹と順番は固定

今回はモデルジムとして、
図のような防衛パーティを考えました。
個人的には相手にしたくない並びを想定しました。

仮定2 : こちらのポケモンは全18タイプから1種ずつ選択

候補ポケモンは全18タイプから代表的なポケモンを
1匹ずつピックアップしました。
伝説ポケモンやウルトラビーストは含みますが、
メガシンカ、シャドウポケモンは除外しました。

技について、
ノーマルアタックとスペシャルアタックを
一つずつだけ考えます。
技解放による2つめのスペシャルアタックは
考えないようにします。

仮定3 : 攻撃側はポケモンの交代が可能

攻撃側はポケモンを交代させることが出来ます。
ジムバトルは勝ち抜き形式で進むため、
攻撃ポケモンが相性の悪い防衛ポケモンと
対峙する盤面が発生します。
この場合、別の攻撃ポケモンに交代することで
より短時間で防衛ポケモンを撃破できます。

交代はバトル中何度でも出来ます。
ただし、交代にかかる時間として

交代ボタンを押す
> 交代ポケモンを選択する
> 戦闘中のポケモンが引っ込む
> 交代後のポケモンが飛び出す

という操作が発生します。
今回は交代に発生する時間を 3秒 としました。

討伐時間テーブルの作成

ポケマピ様の計算ツールを使い
仮定1で設定した防衛ポケモンに対して、
仮定2のポケモンと技の組み合わせを入力し、
討伐時間を計算します。

防衛ポケモンと攻撃ポケモンとの組み合わせからなる
討伐時間テーブルができあがります。
(スマホだと表が見えにくいので注意。)

No.タイプポケモンノーマル技スペシャル技ハピナスソーナンスラッキートゲキッスメタグロスカイリュー
1くさカミツルギはっぱカッターリーフブレード43.422.233.6363654.8
2ほのおレシラムほのおのきばクロスフレイム41.726.93524.714.835
3みずカイオーガたきのぼりこんげんのはどう50.726.935.828.126.937
4でんきデンジュモクでんきショックほうでん45.325.134.915.325.125.1
5こおりマンムーこなゆきゆきなだれ54.330.542.918.148.612.4
6かくとうルカリオカウンターはどうだん29.737.822.556.725.237.8
7どくウツロイドどくづきヘドロばくだん53.827.740.318.265.626.9
8じめんグラードンマッドショットだんがいのつるぎ51.726.241.658.320.860.1
9ひこうファイヤーつばさでうつゴッドバード5226.439.226.441.626.4
10エスパーミュウツーサイコカッターサイコブレイク42.536.633.124.254.924.2
11むしフェローチェむしくいむしのさざめき47.215.935.355.423.639.5
12いわラムパルドうちおとすいわなだれ49.225.840.818.340.817.1
13ゴーストゲンガーしたでなめるシャドーボール118.516.5862916.529
14ドラゴンパルキアドラゴンテールりゅうせいぐん48.226.734.760.340.216.8
15あくダークライバークアウトあくのはどう49.61739.242.218.128.5
16はがねメタグロスバレットパンチコメットパンチ49.728.435.51642.628.4
17フェアリーサーナイトあまえるマジカルシャイン5831.542.531.55222
18ノーマルポリゴンZロックオンはかいこうせん52.826.435.926.440.426.4

これを基にジムを攻撃するための
最適パーティを考えます。

討伐時間テーブルを眺め、
防衛ポケモンを最短で倒せるポケモンを選んでいけば
自然と最適パーティは出来そうな気がします。

しかし仮定3の、ポケモン交代において、
「攻撃側のポケモン交代には 3秒 かかる」
ことを考慮する必要があります。

仮に攻撃ポケモンが今対峙している防衛ポケモン1の
討伐時間が少し長くても、
次に戦うことになる防衛ポケモン2の
討伐時間が短いなら、
交代せずに戦い続けた方が、
交代に発生する時間をペイできて
トータルでは短時間になる状況も考えられます。

交代する、しないを含めて最適な攻撃パーティと
最短討伐時間を考える必要があります。

今回の場合は
18匹の攻撃ポケモンと
6匹の防衛ポケモンだけですが、
全ての討伐時間の組み合わせとして

18の6乗 = 34,012,224 通り

の討伐時間が考えられます。
少ない計算コストで計算できないでしょうか?

最短経路問題へ

今回の様な問題は、
計算アルゴリズムで良く扱われる
最短経路問題に帰着できます。

例えば、
相手の防衛ポケモンが2匹
こちらの攻撃ポケモンの候補が2匹
だとします。

この場合、
防衛ポケモンと攻撃ポケモンの組み合わせから、
下の図のような経路を書くことが出来ます。

この図はグラフといわれており、
○がノード、線をエッジといいます。
エッジの先に矢印がついているので、
このグラフは特に、有向グラフと言います。

エッジには数字がついており、重みを表します。
今回の場合では重みは、
攻撃ポケモンと防衛ポケモンの
組み合わせできまる討伐時間です。

防衛ポケモンは交代されることはなく、
倒したら復活することはないので、
逆方向に戻ることは考える必要はありません。
よって、有向グラフで考えて問題ありません。

先ほどの討伐時間リストのデータを基に、
経路のコストが決まっています。
ここで、水平方向のエッジのコストに対して
斜め方向のエッジのコストは 3 だけ
大きくなっています。
これは、ポケモンの交代が発生すると
3秒かかることを意味しています。
このように経路を定義して、
ダイクストラ法というアルゴリズムを使うだけで、
18の6乗 = 34,012,224 通りも計算することなく、
最短経路、すなわち最短討伐時間および
最適パーティを導くことができます

さきほどの例での
攻撃側候補2匹、防衛ポケモン2匹の
最適ルートは下の図のようになります。

ハピナスをルカリオで倒し、
その後に出てくるソーナンスをダークライで倒す
ことで最短討伐時間になることがわかります。

18匹の攻撃側候補×6匹の防衛ポケモンに対する計算

経路図のイメージ

候補ポケモンと防衛ポケモンに対応する経路を
定義するだけで最適経路を効率的に計算できます。
今回の例では、
18匹の攻撃側候補と6匹の防衛ポケモンがいるので、
18×6 = 108 個のノードを考える必要があります。
始点と終点を足すと合計110個の
ノードからなる経路図を考えます。

まず図を見やすくするために
8匹の攻撃側候補ポケモンと
6匹の防衛ポケモンからなる
8×6 + 2 = 50個のノードで経路図をかきました。
これでもわかりにくいと思いますがあしからず…

全18匹の攻撃側候補と
6匹の防衛ポケモンを経路図にすると
下の図のようになります。
もはや線がみえない…

見かけ上は膨大な経路に見えますが、
このような場合でもダイクストラ法による
最短経路の計算が可能です。

計算結果

ダイクストラ法で最短経路問題を解いた結果が
下の図のようになります。
18タイプの図ではわかりにくいので、
候補ポケモン8匹の図の方で示しています。

最短経路の重みの総和(=最短討伐時間)だけでなく、
最短経路がどのノードを通るかも出力されます。

上記の例では、
最短討伐時間 = 125.6 秒
ルカリオ → フェローチェ → ルカリオ
→ デンジュモク → レシラム → マンムー
となっています。

討伐時間テーブルから以下が確認できます。
各ポケモンの討伐時間合計 = 110.6 秒
交代5回に掛かる時間 = 3×5 = 15 秒

よって、交代を考慮した最短討伐時間を
求めることができました。

もっといろんな計算をやってみます!

今回は、ポケモンGOのジムバトル最適パーティを
最短経路問題で考えました。

手始めということで、
防衛ポケモン6匹と順番固定かつ
こちらの候補ポケモン18匹から
最適な候補ポケモンの組み合わせを選ぶ
という単純な問題設定でした。

今回の問題設定を応用すると、
防衛側が討伐時間を最大化できる6匹の組み合わせ
なども求められる様になります。

これからもポケモンGOを題材にして、
いろんな計算をやってみたいです。

(統計検定1級の勉強もちゃんと毎日してます!)

(2023年5月28日追記) 最適ジム防衛パーティを最短経路問題で考察しました!

(2023年6月17日追記) 単騎ジムアタッカーおすすめランキング!【ポケモンGO】

1 COMMENT

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA