シングルバトルの選出アルゴリズムを考えよう(1)
むかしむかしあるところに、対面評価値表(※)がありました
おじいさんとおばあさんは、この対面評価値を使ってシングルバトルの選出を最適化できないかと考えました。
すると、川から大きなアルゴリズムがどんぶらこどんぶらこと流れてきました。
※あらかじめ定義した型のポケモン同士が1対1で対面したとして、3ターン後のHP割合の差を全組み合わせについて計算したものです。過去記事参照。
(1)平均値最小法
計算手順:
・各相手ポケモンに対して、自分の選出に含まれる3体のポケモンの対面評価値を平均する。
・得られた各平均値のうち、最小のものをその選出の評価値とする。
・評価値が1番高い選出を採用する。
※下段の図に誤りがあります。10.7ではなく-536が平均値の最小値として検出されます。
感想:
基本的な考えとして、シングルバトルでは「全抜き」を防ぐ必要がありそれで最終的な評価値は平均値の最小値、つまり自分の選出に1番「刺さっている」ポケモンの値となっている。
それを前提にして一番単純に考えるとこうなる…と思う。
プログラマーにも計算機にも優しい計算方法。
主な課題点:
・対面構築寄りのシングルバトルでは処理ルートを明確に決めて立ち回ることが多く、図の例では例えばヒヒダルマ(スカーフ想定)を、圧倒的に不利対面となるサザンドラで処理するケースはあまりない。つまり実際の対戦中起こりそうにない対面を計算に含めてしまっている。
(2)最大値最小法
計算手順:
・各相手ポケモンに対して、自分の選出に含まれる3体のポケモンの中で対面評価値が最大のものを探す。
・得られた各最大値のうち、最小のものをその選出の評価値とする。
・評価値が1番高い選出を採用する。
感想:
(1)の懸念点を考慮するとこうなる。パッチラゴンはサザンドラで見て、ヒヒダルマはハッサムで見て、、、といった役割分担を反映できる。実際の対戦でも同じように思考している人が多そう。
主な課題点:
・役割集中のリスクを考慮することができない。例えば、相手がヒヒダルマ・オーロンゲ・ハピナスと選出したときにハッサムは図の通りそれぞれ(1024, 555, 1024)の対面評価値通りのパフォーマンスを発揮できるか?
サンプル計算結果
自分: マリルリ・ハッサム・サザンドラ・カビゴン・ローブシン・ヒートロトム
相手: パッチラゴン・ヒヒダルマ・トリトドン・オーロンゲ・ハピナス・ウーラオス
(1) 平均値最小法
次善選出: マリルリ・ハッサム・ローブシン(最小値-609)
(2)最大値最小法
最適選出: マリルリ・ハッサム・サザンドラ (最小値339)
次善選出: マリルリ・サザンドラ・ヒートロトム(最小値399)
図を描くのに時間かかりすぎたので今日はここまで