【原神】ラグランジュの未定乗数法による理想ステータス配分の計算~ダメバフ固定編~

こちらの記事の続きで,今度はダメージバフの値を固定した状態で,攻撃と会心の理想ステータスを計算します.
fumofumobun-study.hatenablog.com

ダメバフ固定

ダメバフは杯や聖遺物セット効果,武器や絶縁の場合チャージ効率等で調整できますがそこまで大きく変えることのできないステータスではあるので,固定する動機が高いです.
なので固定した場合の計算もしておきます.
ラグランジアンs=4a_r+6c_r+3c_dとして,
L(a_r,c_r,c_d,\lambda):=A(a_r)(1+c_r c_d)-\lambda(4a_r+6c_r+3c_d-s)
となります.未定乗数法は同様なので割愛することとして(一番最初の記事を参考にしてください),


最適会心率の場合分け

ダメバフ変動編とほとんど同様で,
t=\frac{1}{6}(s+4+\frac{1244}{a_b})
とおけば
6c_r+\frac{1}{c_r}=2t
を得ます.

y=6x+1/x

これはx=\frac{1}{\sqrt{6}}で最小値y=2\sqrt{6}をとります.変動編と同様の話で,x=\frac{1}{\sqrt{6}}より左側については考えないでそれより右側で考えていきます.
淡々と話しを進めれば,

 \sqrt{6} < t < 3.5であれば計算されうる最適会心率が40.8%~100%のどれかに定まり,
ステータス量が少ない場合 t < \sqrt{6}は,会心率0%,ステータス量が十分な場合7 < tは,会心率を100%にして他ステータスの配分を考えます.
会心率0%は現実的でないということでこちらについても実際上の工夫をします.



並みステータスの場合

 \sqrt{6} < t < 3.5です.2次方程式の上のほうの解から,
c_r = \frac{t+\sqrt{t^2-6}}{6}
c_d=2c_r
a_r=\frac{3}{4}(2c_r+\frac{1}{c_r}) -\frac{311}{a_b} -1
A(a_r)=\frac{3}{4}(2c_r+\frac{1}{c_r})a_b
となります.
しかし注意しなければならないことがありました.これは次の項目の最後に話します.

ステータス不足の場合

 t < \sqrt{6}です.ダメバフ変動編のときと話しは同じで,会心を最低保証の5%/50%に固定します.この最低保証分のステータスである1.8を差し引いた残りの配分可能なステータスを攻撃力に振るので,
a_r=\frac{1}{4}(s-1.8)
となります.しかし,実際問題の最適という意味では,総合会心は今後の厳選を考え,下げに行くということはせずに現状維持し比率を1:2にします.そして他に配分するステータスはないのでこれだけです.
数学的には攻撃力に振ったほうがいいのですが,厳選が進んでいけば会心が要求されるのであるから厳選段階でわざわざ攻撃に振る必要はないということです.
計算もなにも,
c_r=\frac{1}{2}(c_r^{\rm before}+\frac{1}{2}c_d^{\rm before})
c_d = 2c_r
a_r=a_r^{\rm before}
となります.

しかし,そもそもラグランジュの未定乗数法は十分性が担保されているわけではありません.
ではどこを境界にして期待値が前後するかを計算していきましょう.単純に先ほどのものと今出したものの理想ステータスを計算して等しくなるところを探していきます.
ごちゃごちゃと計算すると
t+\frac{t^3+(t^2-6)^{\frac{3}{2}}}{18}=\frac{41}{80}(3t-\frac{9}{10})
という方程式になります.左辺が並ステータスの場合の期待値で右辺が率5%ダメ50%固定の不足ステータスの期待値から基礎攻撃力を割ったものです.
右辺から左辺を引いてグラフを描画して数値的に解くと,

不足の期待値-並の期待値

となります.横軸tとの交点はt=2.51となっていて,これ以前では不足ステータスのほうが期待値が高く,それ以降では並ステータス配分のほうが期待値が高くなっているということがわかるかと思います.
十分であるかどうかの確認は大事ですね...!.とはいっても率最低にしたときが最大である保証もされていないのでひょっとしたら他の最適比率がある可能性も残ってはいます....
それはともかく,t=2.51での最適会心率は51.0%になります.つまり,先ほどの会心率の値域40.8%~100%というのは本当は51.0%~100%であったのです.
つまり,本当の場合分けをすると,
0 < t <2.51のステータス不足の場合と 2.51 \leq t \leq 3.5のステータス並の場合と 3.5 < tのステータス十分の場合に修正されます.
これをもとにグラフを描くと

最適会心率-t

こうなります.縦軸が総ステータスに関するパラメータtで横軸が最適会心c_rです(なので本当は逆関数にして縦と横を入れ替えたほうが適切ではあります).

注意として数学的にはもうすこしスコアによって最適ステータス配分というのは細かく場合わけされます.しかし,それによる期待値の前後は数%程度の誤差ですので実際には簡単にこのままでよいでしょう.
厳密に最適かどうかでいうと最適ではない部分があるということには注意してください(数学ではなくこれはゲームの話なのでそこまではいいかな..と)

ステータス十分の場合

会心率を100%に固定し,
L(a_r,c_d,\lambda):=A(a_r)(1+c_d)-\lambda(4a_r+3c_d-s')
ラグランジュの未定乗数法を実行します.入力時は会心率に振った分を考慮してs'=4a_r^{\rm before}-6(1-c_r^{\rm before})+3c_d^{\rm before}で計算します.
結果を載せると,
c_d=\frac{1}{6}(s'+\frac{1244}{a_b}+1)=\frac{1}{6}(s+\frac{1244}{a_b}-5)=t-\frac{3}{2}
a_r=\frac{3}{4}c_d - \frac{311}{a_b} -\frac{1}{4}
A(a_r)=\frac{3}{4}(1+c_d)a_b
となります.

突破ステータスが会心系の場合

追記です.もうひとつ考えなければならないことがありました.突破ステータスです.
突破ステータスで最低保証される会心率や会心ダメージがあります.攻撃力%も最低保証されることもあるのですがそこまで考えるとちょっと面倒なので会心だけに限定します.

突破ステが会心率のとき,最低保証は会心率24.2%/会心ダメージ50%,
会心ダメージのとき,会心率5%/会心ダメージ88.4%です.
それぞれ差し引くステータスは2.952です.これで再計算すればいいだけですね.
a_r=\frac{1}{4}(s-2.952)
で,同様に期待値比較をしていきましょう.
まず突破会心率の場合,
t+\frac{t^3+(t^2-6)^{\frac{3}{2}}}{18}=\frac{1121}{2000}(3t-\frac{369}{250})
で解はt=2.50です.つまり,0 < t < 2.5であれば攻撃振り,2.5 \leq t \leq 3.5であればバランス型(会心率50%~100%),3.5 < tであれば率100%ビルドが最適となります.

突破会心ダメージの場合,
t+\frac{t^3+(t^2-6)^{\frac{3}{2}}}{18}=\frac{5221}{10000}(3t-\frac{369}{250})
で解なしとなり,常に負となっています.つまり,ステータス不足であっても攻撃に振るのはよくなく,少しでも会心「率」を稼いだほうがいいということになります.
突破が会心率のときとは違って,会心バランスが大きく崩れていて,それによる期待値低下が激しく,ステータスの損失が大きいからですね.
そしてどのくらいから攻撃振りにしてもよいのかというのを数値計算で得た経験則によると,t=2.065あたりが境界のようです.
まとめると,0 < t < 2.065であれば攻撃振り,2.065 \leq t \leq 3.5であればバランス型,3.5 < tであれば率100%ビルドが最適となります.
しかし,2.07 < t < \sqrt{6}の範囲でバランス型であると,既存の解では定義域外になるので新しく解を作り直す必要があります.
とはいってもラグランジュの未定乗数法での再計算は骨が折れますし,それにまた一工夫が必要です.
なので,ひとまず処方箋的に会心率44.2%会心ダメージ88.4%を最適としておきましょう.ここで固定し,残りのステータスを攻撃に振ります.
a_r=\frac{1}{4}(s-5.304)



これで場合分けは十分かと思います.




以上です.次の記事はCASIOさんのkeisanへの実装(コーディング)編になります.

ご質問・ご指摘がありましたら遠慮なくコメントをお願いいたします.