システムとモデリング

modelica, Julia, Design Structure Matrix, SysML, 他モデリング全般について。

ポケモン ネットワーク分析で新タイプの相性を考える試み

前回に引き続きポケモンを題材にします。 前回それぞれのタイプの優秀さを比較して、それなりに格差があることがわかりました。 今回は『新タイプ』を追加して格差をやわらげることを考えてみたいと思います。

前回の記事は以下

otepipi.hatenablog.com

前回の記事より、各タイプの優秀さは以下のようになりました。

タイプ 優秀さ
はがね 8
フェアリー 3
ゴースト 3
ほのお 3
みず 2
じめん 2
ひこう 2
あく 0
いわ 0
でんき -1
どく -1
ドラゴン -1
かくとう -2
ノーマル -3
こおり -3
エスパー -3
むし -4
くさ -5

『優秀さ』の分散……10.47

今回ここに『新タイプ』を追加して、各タイプの上記優秀さの分散が最小になるように『新タイプ』のタイプ相性を考えてみたいと思います。

方法は以下としました。

『ばつぐん』を3, 『ふつう』を2, 『いまひとつ』を1, 『効果がない』を0として、各タイプの相性セット(37x1行列)を、平均1.92, 分散0.443の乱数を整数化して求める。これを10万回繰り返し、最も分散の小さい相性セットを『新タイプ』の相性セットとする。

これはかなりツッコミどころ満載だと思います。そもそも相性の数値が0,1,2,3の4通り、これが37個あるので場合の数は437という天文学的数字になるところを、たった10万回の試行でこなそうとしているので相当無理があります。ポケモンの相性行列は、大半が2(ふつう)のある意味スパースな行列ですので、乱数を一様乱数ではなく2が出やすい乱数にすることで気休め程度の工夫をしています。

本来は組み合わせ最適化アルゴリズムを応用すべきところですが、勉強不足もあり今回はこのような実装としました。

平均1.92~のくだりは、既存の相性セットを分析して求めました。

結果

新タイプのタイプ相性は以下のヒートマップのようになりました。

f:id:Otepipi:20190501233548p:plain

新タイプのタイプ相性は以下のようになります。

『新タイプ』の技の相性

効果 タイプ
ばつぐん ほのお いわ ゴースト はがね
いまひとつ ノーマル くさ こおり かくとう むし
効果がない なし

『新タイプ』の守備の相性

効果 タイプ
ばつぐん ノーマル くさ じめん 
いまひとつ ほのお みず ひこう フェアリー
効果がない なし

このとき各タイプの優秀さは以下のようになります。

タイプ 優秀さ
はがね 7
フェアリー 2
ゴースト 2
ほのお 1
みず 1
じめん 3
ひこう 1
あく 0
新タイプ 0
いわ -1
でんき -1
どく -1
ドラゴン -1
かくとう -1
ノーマル -3
こおり -2
エスパー -3
むし -3
くさ -3

『優秀さ』の分散……5.88

このときのグラフプロットは以下のようになります。

f:id:Otepipi:20190501234735p:plain

この結果ですとはがねタイプの1強環境がより際立ってしまいますので、新タイプははがねタイプの技を効果無効にしたいところでありましたが、今回は求め方が雑でしたのでそこまでは致りませんでした。もう少しアルゴリズムを勉強してから再挑戦したいと思います。

今回はここまでにします。