阴阳师配置输出御魂
1.引言
本篇文章针对PVE情况,式神以烬天玉藻前为例,基于线性规划分别探讨暴击套和爆伤套的最佳强化状态以及二者最终输出的区别。
2.烬天玉藻前面板
攻击:3551
暴击:12%
爆伤:150%
3.阴阳师面板伤害计算公式
以下仅讨论满暴击情况
实际结算伤害计算公式为:
实 际 最 终 伤 害 = 总 攻 击 × 技 能 系 数 × 暴 击 伤 害 修 正 × 总 防 御 对 应 的 受 伤 × 造 成 伤 害 增 加 b u f f 修 正 × 受 到 伤 害 增 加 d e b u f f 修 正 × 造 成 伤 害 减 少 d e b u f f 修 正 ÷ 受 到 伤 害 减 少 b u f f 修 正 × 御 魂 修 正 × 技 能 修 正 ( 其 它 修 正 ) 实际最终伤害=总攻击×技能系数×暴击伤害修正×总防御对应的受伤×造成伤害增加buff修正×受到伤害增加debuff修正×造成伤害减少debuff修正÷受到伤害减少buff修正×御魂修正×技能修正(其它修正) 实际最终伤害=总攻击×技能系数×暴击伤害修正×总防御对应的受伤×造成伤害增加buff修正×受到伤害增加debuff修正×造成伤害减少debuff修正÷受到伤害减少buff修正×御魂修正×技能修正(其它修正)
公式看似复杂,但一般对于攻击型式神而言,我们只关心如何通过御魂提升的伤害式神总伤害部分
式 神 总 伤 害 = 总 攻 击 × 暴 击 伤 害 修 正 = ( 基 础 攻 击 × ( 1 + 御 魂 攻 击 加 成 ) + 御 魂 固 定 攻 击 ) × 暴 击 伤 害 修 正 式神总伤害=总攻击×暴击伤害修正=(基础攻击×(1+御魂攻击加成)+御魂固定攻击)×暴击伤害修正 式神总伤害=总攻击×暴击伤害修正=(基础攻击×(1+御魂攻击加成)+御魂固定攻击)×暴击伤害修正
4.御魂强化分析
4.1主属性
式神可佩戴的御魂有6个,分为1~6号位。其中1、3、5号位的主属性固定,分别是攻击值、防御值、生命值;2、4、6号位的主属性随机。一般而言对于输出形式神2、4号位选攻击加成主属性、6号位暴击或爆伤。
满强化后,主属性数值如下:
御魂 | 满强化值 |
---|---|
攻击力(1) | 486 |
攻击加成(2/4) | 55% |
暴击(6) | 55% |
爆伤(6) | 89% |
4.2副属性
副属性是随机属性,一个御魂上限4个随机属性。有的御魂副属性数量不足4,会随着强化而刷出新的副属性。副属性随着该御魂强化等级提高刷出新属性或提高已有属性值。强化等级每提升3,提升一项副属性数值,共可以提升5次。
这里我们关心三类副属性:攻击加成、暴击、爆伤。
御魂 | 初始值 | 强化提升值 |
---|---|---|
攻击加成 | 2~3 | 2~3 |
暴击 | 2~3 | 2~3 |
爆伤 | 3~4 | 3~4 |
5.御魂套分析(理想强化试验)
以下分析均是基于满暴击的情况讨论。
本节基于线性规划分析如何强化御魂能够使总攻击最大化。
使用的御魂为针女歌姬套(针女固有15爆,歌姬固有16爆)
强化后的御魂主属性是固定的,而副属性带有随机性。假设理想状态下,玩家手上的御魂未强化时都是4项副属性,其中有3个属性命中了我们需要的,后续5次强化全命中。这里将原本存在的基础副属性算作一次命中,于是可用命中次数为48次。
强化值取折中。
假设攻击加成、暴击、爆伤包括基础副属性以及通过强化命中的次数为x0、x1、x2。
5.1暴击套
暴击套意为6号位主属性为暴击的情况下并满暴击。
则,目标函数和约束条件如下:
m i n − ( 3511 × ( 1 + 2 × 0.55 + 0.025 × x 0 ) + 486 ) × ( 1.5 + 0.035 × x 1 ) s . t . 48 − x 0 − x 1 − x 2 ≥ 0 2.5 × x 2 + 16 + 15 − 100 ≥ 0 x 0 ≥ 0 x 1 ≥ 0 x 2 ≥ 0 36 − x 0 ≥ 0 36 − x 1 ≥ 0 36 − x 2 ≥ 0 \begin{aligned} min\qquad-(3511×(1+2×0.55+0.025×x_0)+486)×(1.5+0.035×x_1)\\ s.t.\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad48-x_0-x_1-x_2≥&0\\ 2.5×x_2+16+15-100≥&0\\ x_0≥&0\\ x_1≥&0\\ x_2≥&0\\ 36-x_0≥&0\\ 36-x_1≥&0\\ 36-x_2≥&0\\ \end{aligned} min−(3511×(1+2×0.55+0.025×x0)+486)×(1.5+0.035×x1)s.t.48−x0−x1−x2≥2.5×x2+16+15−100≥x0≥x1≥x2≥36−x0≥36−x1≥36−x2≥00000000
from scipy import optimize
import numpy as np
def fun():
v=lambda x: -(3511*(1+1.1+0.025*x[0]) + 486 )*(1.5 +0.035*x[1])
return v
def con():
# 约束条件 分为eq 和ineq
#eq表示 函数结果等于0 ; ineq 表示 表达式大于等于0
cons = ({'type': 'ineq', 'fun': lambda x: 48-x[0]-x[1]-x[2]},\
{'type': 'ineq', 'fun': lambda x: 2.5*x[2]+55+16+15-100 }\
{'type': 'ineq', 'fun': lambda x: x[0] },\
{'type': 'ineq', 'fun': lambda x: x[1] },\
{'type': 'ineq', 'fun': lambda x: x[2] },\
{'type': 'ineq', 'fun': lambda x: 36-x[0] },\
{'type': 'ineq', 'fun': lambda x: 36-x[1] },\
{'type': 'ineq', 'fun': lambda x: 36-x[2] })
return cons
cons = con()
x0 = np.asarray((6,8, 10)) #设置初值
res = optimize.minimize(fun(), x0, method='SLSQP',constraints=cons)
print(res.fun)
print(res.success)
print(res.x)
-23241.573600489417
True
[ 6.4 36. 5.6]
鉴于要满暴击,则暴击向上取整,其余向下取整。优化后的组合为:
属性 | 命中次数 |
---|---|
攻击加成 | 6 |
暴伤 | 36 |
爆击 | 6 |
式神攻击伤害:23241
5.2爆伤套
暴伤套意为6号位主属性为暴伤的情况下并满暴击。
则,目标函数和约束条件如下:
m i n − ( 3511 × ( 1 + 2 × 0.55 + 0.025 × x 0 ) + 486 ) × ( 1.5 + 0.89 + 0.035 × x 1 ) s . t . 48 − x 0 − x 1 − x 2 ≥ 0 2.5 × x 2 + 55 + 16 + 15 − 100 ≥ 0 x 0 ≥ 0 x 1 ≥ 0 x 2 ≥ 0 30 − x 0 ≥ 0 30 − x 1 ≥ 0 30 − x 2 ≥ 0 \begin{aligned} min\qquad-(3511×(1+2×0.55+0.025×x_0)+486)×(1.5+0.89+0.035×x_1)\\ s.t.\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad48-x_0-x_1-x_2≥&0\\ 2.5×x_2+55+16+15-100≥&0\\ x_0≥&0\\ x_1≥&0\\ x_2≥&0\\ 30-x_0≥&0\\ 30-x_1≥&0\\ 30-x_2≥&0\\ \end{aligned} min−(3511×(1+2×0.55+0.025×x0)+486)×(1.5+0.89+0.035×x1)s.t.48−x0−x1−x2≥2.5×x2+55+16+15−100≥x0≥x1≥x2≥30−x0≥30−x1≥30−x2≥00000000
from scipy import optimize
import numpy as np
def fun():
v=lambda x: -(3511*(1+1.1+0.025*x[0]) + 486 )*(1.5 + 0.89 + 0.035*x[1])
return v
def con():
# 约束条件 分为eq 和ineq
#eq表示 函数结果等于0 ; ineq 表示 表达式大于等于0
cons = ({'type': 'ineq', 'fun': lambda x: 48-x[0]-x[1]-x[2]},\
{'type': 'ineq', 'fun': lambda x: 2.5*x[2]+16+15-100 }\
{'type': 'ineq', 'fun': lambda x: x[0] },\
{'type': 'ineq', 'fun': lambda x: x[1] },\
{'type': 'ineq', 'fun': lambda x: x[2] },\
{'type': 'ineq', 'fun': lambda x: 36-x[0] },\
{'type': 'ineq', 'fun': lambda x: 36-x[1] },\
{'type': 'ineq', 'fun': lambda x: 36-x[2] })
return cons
cons = con()
x0 = np.asarray((6,8, 10)) #设置初值
res = optimize.minimize(fun(), x0, method='SLSQP',constraints=cons)
print(res.fun)
print(res.success)
print(res.x)
-24394.64639831741
True
[-5.45461604e-09 2.04000000e+01 2.76000000e+01]
优化后的组合为:
属性 | 命中次数 |
---|---|
攻击加成 | 0 |
暴击 | 20 |
爆伤 | 28 |
式神攻击伤害:24394
5.3小结
对于大舅妈来说,在最理想的情况下,尽可能堆爆伤能够最大化伤害。正堆爆伤比反堆爆伤理想状态高出约5%的伤害
6.强化有偏试验
本节讨论非理想状态的强化结果。下面直接给出数值结果:
6.1暴击套(针女+歌姬)
命中次数 | 攻击加成 | 爆伤 | 爆击 | 攻击伤害 |
---|---|---|---|---|
48 | 6 | 36 | 6 | 23241 |
45 | 3 | 36 | 6 | 22514 |
42 | 0 | 36 | 6 | 21788 |
39 | 0 | 33 | 6 | 20975 |
36 | 0 | 30 | 6 | 20150 |
33 | 0 | 27 | 6 | 19325 |
30 | 0 | 24 | 6 | 18500 |
27 | 0 | 21 | 6 | 17675 |
24 | 0 | 18 | 6 | 16849 |
21 | 0 | 15 | 6 | 16024 |
18 | 0 | 12 | 6 | 15199 |
15 | 0 | 9 | 6 | 14374 |
12 | 0 | 6 | 6 | 13549 |
9 | 0 | 3 | 6 | 12723 |
6.2暴伤套(针女+歌姬)
命中次数 | 攻击加成 | 爆伤 | 爆击 | 攻击伤害 |
---|---|---|---|---|
48 | 0 | 20 | 28 | 24394 |
45 | 0 | 17 | 28 | 23569 |
42 | 0 | 14 | 28 | 22744 |
39 | 0 | 11 | 28 | 21919 |
36 | 0 | 8 | 28 | 21093 |
33 | 0 | 5 | 28 | 20268 |
30 | 0 | 2 | 28 | 19443 |
6.3小结
1.理想强化状态下,强化的命中次数与式神的攻击伤害有着线性的关系,表明玩家每一次进步获得的实际成长是固定的。(但付出的成本是非线性的)
2.暴击套相比于爆伤套有更多的最优组合(不是说暴击套的伤害高于爆伤套),表明做暴击套满暴击的风险要低于爆伤套(这是废话)。
3.爆伤套要比暴击套的伤害上限略高,但是相差不多。
4.最优暴击套和最次暴击套的伤害质量相差近一倍。
5.满暴击情况下,尽量满爆伤。(酒吞番外除外,酒吞番外的输出式神加点需要在满暴击情况下攻击点数高于爆伤3~4点)
因此,建议非神豪或欧皇的痒痒鼠们尽量考虑暴击套
,风险小,容错率高。