遺伝的アルゴリズムによるスモコン最適化

ikarino

ikarino

トルネコ3コンボ廃人

scsと遺伝的アルゴリズムを組み合わせ、スモコンを最適化するこころみです。

遺伝的アルゴリズムとは

こちらが比較的面白いです。

簡単に言うと、ランダムな初期世代からいい遺伝子だけを残しつて新しい世代を生み出し、最高の遺伝子を作り出すアルゴリズムです。

今回のお題

4キラーマスモコンの弱化回数を最適化します。
今回の場合はそれぞれの弱化回数が遺伝子です。

  • ①〜⑦のキラーマの弱化回数を0〜6の間で振り、経験値効率が最大となる組み合わせを求めます。
  • 行動順は①〜⑦、巣の順番です。
  • キラーマは倍速でLv30です。
  • 1500ターンの試行を100回行った平均を比べます。

絨毯爆撃的にすべての試行を行うと、7の7乗(823543)通りとなります😓
1ケースあたり10秒だとしても、2288時間かかります。

遺伝的アルゴリズムを用いると、最適解が求まるとは限りませんが、現実的な時間で十分最適と言える解が求まります。

計算結果

世代弱化パターン経験値
13, 4, 6, 6, 6, 0, 412557
24, 6, 6, 5, 0, 0, 513649
34, 6, 6, 5, 0, 0, 513649
45, 5, 6, 6, 0, 0, 513689
54, 6, 6, 5, 0, 0, 513649
64, 6, 6, 5, 0, 0, 513649
74, 6, 6, 6, 0, 0, 513656
85, 6, 6, 6, 0, 0, 613697
95, 6, 6, 6, 0, 0, 613697
105, 6, 6, 6, 0, 0, 613697
115, 6, 6, 6, 0, 0, 513707

12世代目以降は11世代目と同じものが勝者となりました。

現行で用いられている形で、処理役を一匹弱化する形が最適なようです。

あたりまえの結果がでてきて残念です笑

次の案

広げる方向

  • 配置を自由にする(これをすると爆発的にパターン数が増えてしまう)
  • 壁/空マスを自由にする
  • キャラクターを自由にする

制限する方向

  • 階層ごとの現実的なメンバーに限定する
  • 合計弱化回数を制限する
  • 育成キャラを固定する
  • 使用できるマスの範囲を限定する

参考

遺伝的アルゴリズムの実装はPythonライブラリDEAPを使用しました。