【デレステ】遺伝的アルゴリズムでチューニングズルコン編成を作る話
遺伝的アルゴリズムさんにユニットメンバーを選んでもらい、理想的なズルコン編成を導き出すことができるか。というお話です。
背景
以前の記事で、アンコール入りGRAND編成のメンバーの並び順をどうするか?という問題に遺伝的アルゴリズムを使ってみました。 今度は「どう並べるか?」でなく「誰を選ぶか?」に遺伝的アルゴリズムを使うチャレンジです。
ガチ編成、放置編成を自動で組めたら実用的なのですが、考えることが多くてちょっと難しそうです。そこで今回は一番考えやすいズルコン編成をターゲットにしています。
ガチ編成でも放置編成でもズルコン編成でも、編成を考える上で「手持ちのアイドルの中から誰をユニットに入れるか」という点は同じなので………たまたま、ズルコン編成が扱いやすかっただけです。ズルコンしたい訳じゃないんですよ。
目標
ズルコン編成については既に先人が考え尽くしておりまして、例えば以下の記事で解説・検証されています。
【デレステ】チューニングズルコン編成における特技秒数の最適化
ゲストにレゾナンスを迎える条件の下、ズルコンに使える特技の組み合わせを全パターン計算して、ベストな編成を導き出しています。すごい。
この記事によると、2021年2月現在で最もカバー秒数(=MISSをPERFECTにできる効果時間の累計)が高くなる編成は
- 11秒チューニング(中確率)
- 11秒チューニング(中確率)
- 12秒シンデレラマジック
- 9秒スキルブースト
- 9秒パーフェクトサポート
の組み合わせらしいです。123.5秒中112.5秒をカバーできるそうです。9割くらいは放っておいてもPERFECTになるってことですよね。(やばい)
ということで、今回は遺伝的アルゴリズムを使ってこの編成が出てくれば成功とします。
条件・検証方法
- ユニットの候補として考える特技は以下。カッコ内は発動間隔秒数。
SB:スキルブースト(7/8/10)※SSR
SB:スキルブースト(7/9/11)※SR
TS:トリコロール・シンフォニー(7/9/11)
PS:パーフェクトサポート(9/12/15)
TU:チューニング(7/9/11高/11中/13)
CM:シンデレラマジック(12)
EC:アンコール(9/12/15) - ユニット候補は上記の各秒数2枚ずつ揃えた計42枚。その中から5枚選んでユニットを編成する。
- 全員特技Lv10、特技全発動が前提。
- アイドルの属性は考慮しない。(常に3属性揃う前提)
- 曲開始から最後のリズムアイコンが落ちてくるまで時間は123.5秒とする。
- ゲストはセンター効果:レゾナンスのアイドル固定。
アルゴリズムとしては大体以下の感じ
- カバー秒数を評価値として、エリート選択とルーレット選択で淘汰する。
- 一定確率で交叉、突然変異させて新たなユニットを生成する。
- 交叉の方法は一点交叉(ただしメンバーが重複しないようにする)
- 突然変異はユニットの誰か一人をユニット候補とチェンジ。
- 1世代あたり20ユニットで、100世代まで計算。
結果
遺伝的アルゴリズムで進化していく様子を図示してみました。
横軸に世代、縦軸にカバー秒数をとり、各世代に存在する20ユニットをプロットしています。
▼ 交叉する確率を 0.8 (80%) にした場合
最大カバー秒数は110秒。理想値の112.5秒に届かず。
110秒を記録した編成の一例は以下。
11中TU / 8高SB / 12中CM / 11高TU / 9高PS
ユニットの候補をズルコン向けの特技に絞っているからか、ランダムに作った最初の世代の時点でそこそこ高いカバー秒数が出てますね。
5世代目には109.5秒まで上がっていますが、そこからなかなか上がらず。世代数を増やしても最高値にたどり着かず、局所解で終わりそうな気も………
ときどき低い値が居ますが、特技が5種類揃わずレゾナンスが発動しなかったケースかな。
▼ 交叉する確率を 0.1 (10%) にした場合
最大カバー秒数は112.5秒。理想値が出たのでとりあえず成功です!
編成も想定通りです。
11中TU / 9高SB / 12中CM / 9高PS / 11中TU
交叉率0.8に比べるとだいぶ分布が散らかっています。交叉が少ない分、突然変異で積極的にチェンジして、理想値に到達するのも早かったんですかね。
ただ、ググった感じ交叉率は高め(80%以上)にしておくものらしいのですが………もしかしたら今回使っている交叉の方法があんまり良くないのかも。。
おまけ
シンデレラマジック無しVer も軽く流してみました。
↓ 見つかった中でカバー率高めの3パターン。
アンコール入り編成もちゃんと出てくる。
カバー秒数 109.5秒
11中TU / 12中EC / 9高PS / 8高SB / 11中TU
カバー秒数 105.5秒
11中TU / 12中EC / 9高PS / 8高SB / 11高SB
カバー秒数 103秒
7高TU / 10高SB / 12高PS / 7高TS / 9高PS
レゾナンス無しVer も軽く流してみました。
↓ 見つかった中でカバー率高めの3パターン。
鬼強マジックが12秒なのでパフェサポは9秒&15秒。
アンコールが入ってこなかったのはちょっと意外。
カバー秒数 102.5秒
10高SB / 12中CM / 9高PS / 7高SB / 15高PS
カバー秒数 102秒
9高SB / 15高PS / 10高SB / 12中CM / 9高PS
カバー秒数 101秒
15高PS / 11高SB / 12中CM / 9高SB / 9高PS
まとめ
遺伝的アルゴリズムさんがズルコン編成を作れました。ガチ編成、放置編成も作れる可能性はありますね。ユニット候補のメンバーが多くなるのと、ユニットの評価方法が難しくなるのが問題。
【デレステ】GRAND LIVEズルコン編成の配置最適化の試み
スキブ&パフェサポ&アンコールのGRANDズルコン編成でメンバーの並び順をどうするか問題に遺伝的アルゴリズムを使ってみたお話。
背景
GRAND LIVE あんまりやる気しないけどフルコン埋めだけしとこっか・・・と思ったら全然フルコンできないんですよね。ズルコンに手を出すか・・・?
ということで、どんな編成がよいかの計算を試してみましたというお話です。配布されてるデレステ計算機使えば分かることかもしれないですが、計算してみたくなっちゃったのだから仕方ない。
前提・方針
・使うのはPERFECTサポート&スキルブースト系
最近はオバロやチューニングを使ったズルコンがあるみたいですが、古くからあるパフェサポ&スキブ大作戦に絞ります。つまり
・パフェサポ:GREAT/NICE/BADをPERFECTにする
・スキブ:他アイドルの特技効果を大アップ
この2つが同時発動している間は、いくらMISSしてもPERFCETになるというアレですね。音ゲーとして大丈夫なのかという。
スキブはSRでもOK、3属性揃えばトリコロール・シンフォニーでもOK。
・採用アイドルは以下の15名で固定
一般的な理想ズルコン編成みたいなのまで追求する気はないので、とりあえず持ってるスキブとパフェサポ入れて、足りない分をアンコール+α で雑に埋めたユニットで配置最適化を試します。
特技名は次の通り省略してます。
SB:スキルブースト
SY:シンフォニー
PS:PERFECTサポート
EN:アンコール
メンバー | 特技 | 間隔 | 確率 | 継続 | |
---|---|---|---|---|---|
SSR | 速水奏 | SB | 8秒 | 高 | しばらく |
SSR | 速水奏(特訓前) | SB | 8秒 | 高 | しばらく |
SSR | 前川みく | SB | 8秒 | 高 | しばらく |
SR | 新田美波 | SB | 9秒 | 高 | 少し |
SSR | 藤原肇 | SY | 7秒 | 高 | わずか |
SSR | 本田未央 | PS | 15秒 | 高 | しばらく |
SSR | 渋谷凛 | PS | 12秒 | 高 | 少し |
SSR | 土屋亜子 | PS | 12秒 | 高 | 少し |
SR | 黒埼ちとせ | EN | 9秒 | 中 | わずか |
SR | 佐城雪美 | EN | 12秒 | 中 | 少し |
SR | 大槻唯 | EN | 12秒 | 中 | 少し |
SR | 辻野あかり | EN | 12秒 | 中 | 少し |
SR | 赤城みりあ | EN | 15秒 | 中 | しばらく |
SR | 北条加蓮 | EN | 15秒 | 中 | しばらく |
SR | 安部菜々 | EN | 15秒 | 中 | しばらく |
全員特技Lvは10、ポテンシャルは特技発動率に4振ってあるとします。Lv10&ポテ4あれば、楽曲属性ボーナスとSSRスキブのセンター効果を乗せて特技発動率100%になるので。
(ところでこの表の高さもうちょっと小さくならないの?)
・楽曲はStarry-Go-Roundを想定
なんとなく。私がFORTEをフルコンできないからってわけじゃないですよ。
・カバー率が高くなる配置を探す
ここでは、”MISSしてもPERFECTとなる時間”が楽曲全体の時間の何%になるかをカバー率とします。
(カバー率) = (パフェサポ&スキブ同時発動時間) / (楽曲の長さ)
という感じですね。GRAND LIVE だと同じメンバーでも配置によって結構カバー率が変わるはずなので、どう配置するのが一番良いか知りたい。
カバー率の計算方法
・単一の特技のカバー率
例えば15秒毎にしばらくの間(7.5秒間)発動する特技の場合、シンプルに割り算(7.5/15=50%)でだいたいのカバー率を出せます。実際は曲の冒頭に発動しない分と、曲の終了タイミングによってカバー率が変わりますが。
今回は2種類の特技が重複発動している時間を知りたいので、そう簡単にはいかない…
・複数の特技のカバー率
複数の特技が同時発動している時間ってどうやって計算するの??単一のときみたいにパッと出せないのかな。誰か教えて…
全然わからないので地道に計算します。曲開始から0.5秒進めて、誰の特技が発動するか調べて、また0.5秒進めて・・・というのを曲終了まで繰り返せばカバー率が分かるという原理。
さすがに手計算でやると気が狂いそうだったので、プログラミングしてみます。入門書めくりながら書いてみたら出来たっぽい。if文とfor文があれば何とかなるな?(暴論)
試しに以下の編成で計算してみます。
一応は特技が確定発動するように、各ユニットに3属性入れてスキブ(SB)センターにしています。パフェサポ(PS)も各ユニットに入れてみました。
カバー率は・・・35.5%
低すぎない??と思ったけど、実際この程度みたい。スキブは各ユニットに8高を入れているのでほぼ発動してる(7.5秒発動して0.5秒休む)のですが、パフェサポのカバー率が低いのですね。アンコールも発動がもろに被っていて活かせていないですね。
残念な編成ですが、カバー率の計算は試せたのでヨシ。
メンバー配置の探索方法
編成(メンバーの配置)を決めればカバー率を出せるようになったので、じゃあどんな配置がよいの?というのを探します。どう探すか・・・
・案1.すべての配置のカバー率を計算する → 無理
すべての配置パターンでそれぞれカバー率を計算して、どれが一番いいか調べる作戦です。一番シンプルで確実な方法です。
ただ面倒なことに、メンバーの配置場所によってアンコールがどの特技をコピーするか変わることがあります。メンバーをどのユニットに割り振るかだけでなく、全員の並び順を考えないといけないですね。。15人を並べるパターンが何通りあるかというと、
15×14×・・・×2×1 = 1,307,674,368,000 通り。
1兆通り以上。やばい。1編成のカバー率を0.01秒で計算できるとしても、全部計算するのに400年以上かかる。む~~りぃ~~
・案2.条件を付け限定した配置のカバー率を計算する → 無理(わからん)
条件をつけてパターン数を減らせば計算できる量になるかも。例えば特技発動率が低くなる編成(センター効果が特技発動率UP以外など)は除外するとか。
ということで、次の条件をつけてみます。
・各ユニットのセンターはSSRのスキブで固定 (奏×2, みく)
・各ユニットに3属性 (Cu/Co/Pa) が揃うようにする
この条件を満たすパターンが何通りになるかというと・・・えっ普通にわからん。数学が苦手すぎる。。諦める。誰か教えて…
・案3.遺伝的アルゴリズムを使う → 試す
この前Twitterで遺伝的アルゴリズムを使って遊んでいるひとを見たので、もしかしたら使えるのでは??と思って調べてみたら使えそうでした。
世の中には似たような問題があるもので、巡回セールスマン問題というものに遺伝的アルゴリズムを使っている話が参考になりました。「セールスマンがどの訪問先をどの順番で回るのがよいか」「どのアイドルをどの順番で配置するのがよいか」・・・似てる
ざっくりどんな流れかというと、
① ランダムに配置した編成をたくさん作る
② それぞれの編成のカバー率を計算する
③ その中で一番いい編成を選んだり、編成同士を交ぜたりする
④ ①とは別の編成がたくさんできる
⑤ それぞれの編成のカバー率を計算する
⑥ その中で一番いい編成を選んだり、編成同士を交ぜたりする
︙
これをたくさん繰り返すと、だんだん優秀なのが増えてくるという理論。魔法か?
特技発動率の低い編成が生き残りにくくなるよう、カバー率は3回計算した結果の平均値を使いました。
計算結果
遺伝的アルゴリズムを流してみると、最初はランダムに生成した編成でカバー率が低いのですが、だんだんとカバー率の高い編成が増えていきます。すごい。
ランダム要素があるので何度か流してみたのですが、カバー率はだいたい 51.3% か 53.2% に収束しました。そして最高値は 55.1% !試しに計算した編成(35.5%)に比べるとだいぶ高いですね。
最高値を出した編成はこちら。
ちゃんと各ユニット3属性揃えてスキブ(SB)センターになってるからすごい。
それ以外は謎ですね。こうすればいいのか・・・みたいな発見が無い。
ユニットBのセンターはSSRではなくSRになっています。(謎)
センター効果のトリコロール・アビリティはSSRなら特技発動率50%アップですが、SRだと40%アップなので、これだとユニットBの9中/15中アンコール(EN)発動率が90%くらいになってしまいます。多少発動しなくても影響ないのかもですね。
ちなみにユニットBのセンターをユニットCのSSR奏と入れ替えると、カバー率が55.1% → 46%に落ちました。特技の発動間隔が変わって色々と狂うみたいです。謎。
あとユニットCは8高スキブが2人、12中アンコールが2人と無駄に被っているので、別の特技の子とチェンジすれば改善できそうです。
まとめ
アンコールはベストな編成を探すのがむずい。
遺伝的アルゴリズムさんに編成を考えてもらうのは他にも使えるかも。
【デレステ】特技アンコールの仕様をクイズ形式でまとめてみる
デレステの特技「アンコール」がどんな仕様なのか、どう使うのがよいのか、全然わからないので調べました。
実装されてしばらくは限定SSRの茄子とサンタ 2人だけの特技でしたが、最近はイベント報酬でアンコール持ちのSRをゲットできることがありますね。(ゲットしたけどよくわからないので放置してた。)
アンコールの仕様
基本的な仕様
アンコールの説明は「直前に発動した他アイドルの特技効果を繰り返す」です。
簡単に図にしてみると ↓
簡単のため、9秒間隔で発動する「Perfectサポート」と12秒間隔で発動する「アンコール」の2人だけで考えています。
まず曲開始後 9秒目からパフェサポ発動(青線)
次に12秒目からアンコールが発動します(黄線)
アンコールの直前にパフェサポが発動しているので、アンコールの効果はパフェサポに化けるわけですね。
細かい仕様
もう少し細かい話は wiki に説明がありました。ポイントとしては3点ですね。
- 参照先がない場合は不発
- アンコールと同時に発動した特技は参照しない
- 同タイミングに複数の特技が発動していた場合、右端→左端→右→左→中央の順に発動した扱いとなり、その最後のスキルが参照される
ちょっと分かりづらいですが、これをふまえてクイズをやってみましょう!
クイズ
アンコール(黄色い線の部分)が何の特技として発動するか、考えてみてください。
全部答えられればアンコールマスター!
クイズ①
さっきの例とは逆に、9秒目にアンコールが発動して、12秒目にパフェサポが発動しています。
「1.参照先がない場合は不発」のルールがあるので・・・
答えは不発(なにも発動しない)です。
参照先、つまり「直前に発動した他アイドルの特技」が無いから。
クイズ②
今度は8秒目にスキブ(スキルブースト)が発動してから、9秒目にパフェサポとアンコールが同時発動しています。
「2.アンコールと同時に発動した特技は参照しない」のルールがあるので・・・
答えはスキブです。
パフェサポは同時に発動しちゃっているので、それより前のスキブが優先されるのですね。
クイズ③
次は5人揃ったクイズです。8秒目にスキブが発動し、9秒目にはパフェサポとシナジー(トリコロール・シナジー)とチューニングの3つが同時発動しています。そして12秒目でアンコールが発動。
「3.同タイミングに複数の特技が発動していた場合、右端→左端→右→左→中央の順に発動した扱いとなり、その最後のスキルが参照される」のルールがあるので・・・
答えはシナジーです。
「コピーする特技の優先度は 中央>左>右>左端>右端」だと言い換えたほうが分かりやすいかもしれないです。中央に近いのが優先、右か左かで言ったら左が優先。
優先度的には中央のスキブが一番高いのですが、今回スキブはアンコールの直前に発動してないので対象外です。
ということで残ったパフェサポ(左端)、シナジー(右)チューニング(右端)の3択となって、端っこの2つよりはシナジーの優先度が高くなります。
ちなみに GRAND LIVE のときは他ユニットの特技もコピーするようで、その優先度は ユニットA>B>C とのこと。 同ユニット内で同時発動があれば中央>左>右>左端>右端。
クイズ④
応用問題。ユニットにアンコールを2人入れた謎編成です。①と②両方考えてみましょう。
といっても、①はすぐ分かりますね。答えを言っちゃうと①はスキブです。
問題は②です。(左端)パフェサポは②と同時に発動しているので除外、(中央)スキブも直前ではないから除外、すると (左)アンコールと (右端)シナジーのどちらか、優先度的に (左)アンコール………だけど、このアンコールはスキブをコピーしているから・・・スキブ?
と思いきや、②はシナジーです。
意味わからん!でも試してみたらそうだった。
みてみて。開始15秒目あたりでパフェサポしぶりんとアンコール唯だけ発動しているシーン。
SCOREとCOMBOとライフにアンコールマークがついてる!どう見てもシナジー!
どうやらアンコールはアンコールの参照先にならないらしい。
例えばクイズ④では9秒目のアンコールは無視されて、直前に発動した特技はシナジーのみ、って考えられます。
まぁ、かなり限られたケースでしか影響しない話なので知らなくてもよいですね。
まとめ
アンコールは「直前に発動した他アイドルの特技効果を繰り返す」特技
- 参照先がない場合は不発
- アンコールと同時に発動した特技は参照しない
- 同タイミングに複数の特技が発動していた場合、右端→左端→右→左→中央の順に発動した扱いとなり、その最後のスキルが参照される
- 直前にアンコールが発動していた場合、アンコールは無視して他の特技が参照される
です。
仕様は分かったけど結局どう使えばいいかよく分からないですね。
非レゾナンス編成ならとりあえず秒数が被らないようにしておけばいいんじゃないかな。知らんけど。
おまけ
全員アンコール・・・
答えは全員不発です。
曲が始まってから終わるまで、誰も何も発動しません
アイドル達が「え・・・これどうすんの?編成事故??」って戸惑いながらLIVEをやり遂げる様が目に浮かびますね