【原神】ラグランジュの未定乗数法を用いて原神の期待値計算

原神の非固定値ダメージはキャラクター側では天賦倍率×参照ステータス×会心補正×ダメージバフ,これに敵側の元素/物理耐性補正×防御補正を乗じて定まります.
殆どのキャラは参照ステータスが攻撃力です.今回は,聖遺物や武器などの変動するステータスによってダメージの期待値を最適化してみます.

本記事をもとにさらに発展した内容の記事がこれらです.ぜひご参考ください.
ダメバフ変動編
fumofumobun-study.hatenablog.com
ダメバフ固定編
fumofumobun-study.hatenablog.com
CASIO keisan実装編
fumofumobun-study.hatenablog.com

変数

変動するステータスは,武器による基礎攻撃力,武器に付くステータス,聖遺物のオプションだとします.
しかし,基礎攻撃力は変数といっても連続的に変化させることもできないので,各計算ごとに初期値として与えるものとします(結局定数のようなもの).
基礎攻撃力a_b,合計攻撃力%a_r会心c_r会心ダメージc_d,合計ダメージバフd_b
これらを変数とします.原神では聖遺物や武器を見るとわかるように,それぞれステータスに重み付けがされています.
聖遺物のメインステータスを参考にすると会心31.1\%に対して,攻撃力46.6\%会心ダメージ62.2\%,ダメージバフ46.6\%です.
つまり,上昇させることのできるステータスは常にこの重み付けをされているということになるので,
4a_r+6c_r+3c_d+4d_b=s=const.という制約がつくことになります.このsを重み付きの合計スコアと言うことにします.

ラグランジュの未定乗数法

ダメージ期待値は最終攻撃力×会心補正×ダメバフに比例します.最終攻撃力をA(a_r):=(1+a_r)a_b+311とおきます.攻撃力%は基礎攻撃力にかかり,311は聖遺物の羽の固定メインオプションの値です.聖遺物の攻撃力固定値は無視します.
会心補正は会心発生時(確率c_r)にダメージが1+c_d倍になり,非会心時(確率1-c_r)には等倍なので,c_r(1+c_d)+(1-c_r)=1+c_r c_dとなります.したがって,
A(a_r)(1+c_r c_d)(1+d_b)
を最大化すればよいということになります.制約条件から,ラグランジアンL(と名前がついているのかは怪しい)は
L(a_r,c_r,c_d,d_b,\lambda):=A(a_r)(1+c_r c_d)(1+d_b)-\lambda(4a_r+6c_r+3c_d+4d_b-s=0)
となります.

ベネット補正・万葉補正

Lv90で天賦Lv13,天空の刃もちの旧貴族ベネットの攻撃力バフ:0.2a_b+1111を用いる場合も考えます.ベネットの補正をするには,
A(a_r)→A_b(a_r)=(1.2+a_r)a_b+1422の置き換えをします.
熟知1000の万葉による元素ダメージバフ:0.4を用いて補正する場合,最大化させる対象を
A(a_r)(1+c_r c_d)(1.4+d_b)
に置き換えます.これらの補正を用いたい場合は各自置き換えて計算を進めてください.龍殺しや九条,ゴローの会心ダメバフ,モナのダメバフなども同様です.

極値の計算

A'(a_r)=\frac{dA}{da_r}(a_r)=a_bです.ラグランジアン偏微分していき,
\frac{\partial L}{\partial a_r}=A'(a_r)(1+c_r c_d)(1+d_b)-4\lambda=0・・・①
\frac{\partial L}{\partial c_r}=A(a_r)c_d(1+d_b)-6\lambda=0・・・②
\frac{\partial L}{\partial c_d}=A(a_r)c_r(1+d_b)-3\lambda=0・・・③
\frac{\partial L}{\partial d_b}=A(a_r)(1+c_r c_d)-4\lambda=0・・・④
\frac{\partial L}{\partial \lambda}=-(4a_r+6c_r+3c_d+4d_b)+s=0・・・⑤
線形だったら行列でも書き出したかもしれないですが会心補正が非線形ですね.①=④より,
A(a_r)=A'(a_r)(1+d_b)
a_r=d_b-\frac{311}{a_b}
を得ます.
②=2×③より,
2c_r=c_d
を得ます.これは,会心率と会心ダメージの比率が1:2であることが好ましいというもので有名なものかと思います.
ここからsを一つの変数で表すようにまとめ上げたいので,A(a_r)c_rの関係式を求めます.
①と②は(1+d_b)に比例しているのでここから求めることができ,3×①=2×②より
A(a_r)=\frac{3}{4} A'(a_r)(2c_r+\frac{1}{c_r})
a_r=\frac{3}{4}(2c_r+\frac{1}{c_r})-\frac{311}{a_b}-1
となります.これらを⑤式に代入すると,
s=24c_r-(8+\frac{1244}{a_b})+\frac{6}{c_r}
となります.経験的に,会心60\%のステータスに落ち着くことが多いですが,
最適化された状態で会心率が60\%であるとき,s=15程度になります.これが経験的なsの目安ですね.
いま求めたいのは,sが与えられたときにc_rをどのように最適化するべきかということなので,この2次方程式を解くことにより,
t:=\frac{1}{6}(8+s+\frac{1244}{a_b})とおいて,
c_r=\frac{t\pm\sqrt{t^2-16}}{8}
と求まります.ベネット補正の場合は,t:=\frac{1}{6}(8.8+s+\frac{5688}{a_b})として計算します.またベネット補正の場合はa_r=\frac{3}{4}(2c_r+\frac{1}{c_r})-\frac{1422}{a_b}-1.2=d_b-0.2-\frac{1422}{a_b}です.
sを概算して与えることによって,最適な会心c_rが求まります.会心ダメージc_dは常にその2倍が最適で,
攻撃力%a_ra_r=\frac{3}{4}(2c_r+\frac{1}{c_r})-\frac{311}{a_b}-1までは盛ることが最適ということになります.
また,ダメージバフd_bの目安がd_b=a_r+\frac{311}{a_b}となります.ダメージバフは聖遺物のサブOPでは盛ることができないことが多いので,もしダメージバフが求めた値より
足りていない場合は武器を武器効果でダメージバフが盛れるものに変えるか,聖遺物のセット効果を見直すか,元素アタッカーの場合は万葉を採用したほうがいいということになります.

具体例:絶縁祭礼行秋の場合

上で求めた計算の運用方法として具体例を挙げておきます.
祭礼の剣を装備した絶縁行秋を想定します.基礎攻撃力はa_b=650程度になります.
ここからsを概算していきます.経験則では15程度であったので,概算して15程度になっていれば大きく間違った計算をしてはいないということになります.
攻撃力%は聖遺物時計のメインOPである0.466と突破ステータスの0.24あります.
会心系は初期で会心0.05会心ダメージ0.5,冠のメインOP(会心率換算とします)0.311あります.会心系の武器を持たせた場合はここに足します.
ダメージバフは杯の0.466と固有天賦の0.2に加えて,絶縁の旗印のセット効果で典型的には0.5(チャージ効率200\%)ほどあるとします.
聖遺物のサブOPの重み付き合計スコアを4.5とします.
この聖遺物のスコア4.5というのは例えば全部位に全部会心率のみがついてサブOPの合計で75\%会心率が盛れているとしたものです:6×0.75=4.5
かなりいい聖遺物を揃えられた厳選ラインだと6くらいになります.全部位が神聖遺物だと7.5程です.
正確に重み付けをしているので,厳密にはここで用いてるスコアとは一致しないですが,よく用いられる簡易なスコア:攻撃力[%]+2×会心率[%]+会心ダメージ[%]の全部位の合計に対して,3倍して100で割ればだいたいここでいうスコアの目安になります(つまりスコア7.5というのは各部位でよく用いられるスコアが50あるということです).
そして,この場合の重み付き合計スコアsの概算は,
s=4×(0.466+0.24)(攻撃力)+6×(0.05+0.311)(会心率)+3×0.5(会心ダメージ)+4×(0.466+0.2+0.5)(ダメバフ)+4.5(聖遺物サブOP)
=15.65
先ほどの目安15に近いですね.この値が割り振るステータスの総量ということになって,ここからどのような比率で割り振るのが最適なのかということがわかっていきます.

まず,2次方程式を解いた結果を使って会心率から求めていきます.t=8+15.56+\frac{1244}{650}=25.56となるので,
c_r=\frac{25.56\pm\sqrt{25.56^2-576}}{48}=0.716, 0.349
となります.2つ解が出てきますが会心率が高いほうを採用していきます.

会心c_r=0.716の場合,
会心ダメージはいつもその2倍であるc_d=1.432が最適です.攻撃力%a_r
a_r=\frac{3}{4}(2×0.716+\frac{1}{0.716})-\frac{311}{650}-1=0.643
が最適となります.
ピンとこないので最終攻撃力を求めると,
A(0.643):=1.652×650+311=1379
なんだか小さすぎる気がしますが,実際に小さいです.攻撃力はメインOPと突破ステータスで0.706稼げていて,最小値がA(0.706)=1420です.
なので,0.643というのはあり得ないのです.行秋に基礎攻撃力の低い祭礼の剣を持たせる場合は,攻撃力%の恩恵が薄く,できるだけ会心の方を盛った方がよいということですね.
なので最適化とはなりませんがこの最小ステータスは武器で攻撃%を盛っているわけでもなく,変えられないので,攻撃力%a_r=0.706と固定します.
というかこの結果になった時点で,基礎攻撃力が足りていないということがわかるので,武器を変更するべきという結論にはなるのですが,行秋に祭礼の剣は武器効果がベストマッチなのでさすがに変えられないですね.
会心0.716というのは最小値の攻撃力を限界突破してさらに攻撃力を下げて会心に補填したときに達成されるので,実際には達成することができません.
このような例外になった場合,攻撃力を変数としないモデルとして計算をやり直さなければならないのですが,面倒であるので目安の値を求めます(せっかく計算したのに例外で意味ないじゃん!となりますが・・・).
攻撃力を一切盛らないで会心に盛ったとすればよいので,聖遺物の重み付き合計スコア4.5を1:2で割り振って,c_r=0.681c_d=1.361が最適解となります.
この時点でs=15.65のうち8.166分を会心系に消費したということになります.攻撃にステータスを割り振るべきではないという結論であったので,残りの7.484分のうち,最小の攻撃を除いた分をダメージバフに振るのがよいということになり,ダメージバフの目安は
d_b=(7.484-4×(0.466+0.24))/4=1.165
が最適となります.杯と固有天賦の分を差し引けば0.499分を絶縁の旗印4セット効果で補えばよく,チャージ効率が199.6\%まで盛れていればよいということになります.この程度のチャージ効率ならサブOPにほんのりつくだけで達成できます(絶縁の旗印セット効果の上限を超えていたり,明らかに無理なダメバフが要求されていた場合,その分を仕方なしに攻撃力に回すことになります).
まとめると,攻撃力1420 会心68.1\% 会心ダメージ136.1\% チャージ効率199.6\%が最適解の1つになります.
期待値を計算してみると,
1420×(1+0.681×1.361)×2.165=5923.7
ここへ天賦倍率と元素耐性,防御補正が乗ざれます.剣雨は天賦Lv13で115%,2凸効果で元素耐性が-5%になっていて防御補正が0.5であるとすると,
1.15×5923.7×(1+0.05/2)×0.5=3491(会心時が4278,非会心時が1812)
が剣雨1本の期待値ですね.
なんだか例外続きで前の見出しまでで計算した最適化の手法の殆どを使わずに計算をすることになってしまいましたね.(例外を扱うためにこの例を出したんですが(;^_^)