风之筝 一名喜欢代码的工科狗

SIF游戏分析-有限技能经验下的SSR喂卡分析

2019-05-31
风之筝

在SIF中,SSR是相对而言比较容易得到同卡的一类卡,尤其是在散拉活动中,满肝度情况下有机会获得11张同卡。之前已有很多大佬贡献了喂卡攻略,例如9张同卡可以5孔5级,11张同卡补1000经验可以6孔6级。今天我们来验证一下,该方法是否已经是达到了最优解的状态。

1. 计算背景与设定

1.1 计算背景

SSR是SIF中低位比较尴尬的一类卡,相对于UR,其技能成长度很低,投入技能经验后强度增长缓慢;相对于SR,则获取难度较大,且需要投喂技能资源更多。因此在强度党眼里,抽到SSR=金贴纸+1

但不可否认的是,对于卡组未成形的队伍来说,SSR仍然是过渡期比较具有价值的卡。尤其是散拉活动的推出,大幅度降低了SSR培养的成本,因此通过养一张高级判、奶上卡组则可以在前期以较低的成本获得长期使用的过渡期卡。

大量SSR同卡时的喂卡策略与UR的喂卡策略有所不同。下图是大家熟知的经验表:

经验表中,SR在1级喂最优,SSR在3级喂最优,UR在4/5级喂最优。而我们的计算背景与该情形有所不同:

  1. UR同卡获取难度极高,因此UR的培养策略是在有限同卡下,获得尽可能多的收益
  2. SSR作为过渡卡,不值得投入大量经验培养,因此培养策略是在有限经验下,获得尽可能多的收益

因此本文主要计算在给定同卡以及目标技能等级的情况下,最低需要投入的经验值。

1.2 计算设定

本文计算时基于如下假设:

  1. 由于不同目标技能等级的喂法存在差异,需要在开始设定好技能目标;
  2. 仅考虑升技能需要的同卡数,不考虑觉醒开孔;
  3. 最终合成的目标卡仅有一张。

2. 计算方法

2.1 算法设计

主要算法:动态规划+背包(目前想到的是这种效率很低的求解方法)

问题建模

已知SSR的投入与产出情况如下表所示:

级别 1级 2级 3级 4级 5级 6级 7级 8级
培养累积经验 0 200 600 1400 2600 5000 8200 12700
练习获得经验 300 600 1200 1800 2700 3600 4500 6600

这里我们以100经验为1个经验单位。以函数\(f(n, m)\)表示在拥有\(n\)张同卡,且投入\(m\)经验单位时,最多可以获得的经验数。迭代基显然为:在拥有1张卡时,投入\(m\)经验即可获得\(m\)经验,即有

\[f(1,m)=m\]

而当我们拥有\(n\)张卡时,我们可以将除胚子卡外的\(n-1\)张卡分为\(k\)份,每份卡的数量为\(n_k\),并给每份卡投入\(m_k\)的经验,每一份获取最大收益后,全部喂给胚子卡,因此胚子卡得到的总经验数为:

\[EXP(k,n_1,...,n_k,m_1,...m_k)=\sum_k{Practice\left(f(n_k,m_k)\right)}+\left(m-\sum_km_k\right)\]

式中\(Practice(x)\)表示总技能经验为\(x\)的卡被练习所获得的技能值。因此我们需要在所有的划分中,寻找最佳划分,即有

\[f(n,m)=\max{EXP(k,n_1,...,n_k,m_1,...m_k)}=max{\sum_k{Practice\left(f(n_k,m_k)\right)}+\left(m-\sum_km_k\right)}\]

此即为\(f(n,m)\)的状态转移方程。

2.2 剪枝策略

上述计算过程实际计算起来效率极低,而实际上大多数的搜索实际是无用的。因此可以采用一定的剪枝策略加速计算。可以采用的剪枝策略包括:

  1. 若\(f(n,m)\)与\(f(n,m-1)\)具有相同的技能等级,则意味着多投入100经验并不会带来技能等级的变化,既然都是狗粮那为什么要多喂100经验呢?此时\(f(n,m)\)为无效的狗粮,搜索过程中去除。此时可搜索的投入经验数降低为至多8种。
  2. 从经验表中可以看出,3级狗粮是最赚经验的,4级相对于3级投入更高、收益更低。因此实际情况下,所有的狗粮均应该小于等于3级,意味着每组卡牌的数量应小于等于3。由此可剪除部分不合理的划分方法。

上述剪枝策略使得程序可以正常运行(虽然还是很慢,还是自己太菜)。

2.3 程序设计

已更新到github,代码库链接:SIF_Calculator

3. 计算结果

3.1 最小投入经验值表

最低需要的经验数 2级 3级 4级 5级 6级 7级 8级
1卡 200 600 1400 2600 5000 8200 12700
2卡 0 200 800 2000 4400 7600 12100
3卡 0 0 400 1400 3800 7000 11500
4卡 0 0 200 1000 3200 6400 10900
5卡 0 0 0 600 2600 5800 10300
6卡 0 0 0 400 2200 5200 9700
7卡 0 0 0 200 1800 4600 9100
8卡 0 0 0 0 1400 4200 8500
9卡 0 0 0 0 1000 3800 7900
10卡 0 0 0 0 800 3400 7300
11卡 0 0 0 0 600 3000 6700
12卡 0 0 0 0 400 2600 6300
13卡 0 0 0 0 200 2200 5900
14卡 0 0 0 0 0 1800 5500
15卡 0 0 0 0 0 1400 5100
16卡 0 0 0 0 0 1200 4700
17卡 0 0 0 0 0 1000 4300
18卡 0 0 0 0 0 800 3900
19卡 0 0 0 0 0 600 3500
20卡 0 0 0 0 0 400 3100

注1:卡数包括胚子卡(即最后培养成型的1张),不包括任何用于开孔的卡。

注2:红色部分表示上一技能等级已是最优喂法,只能通过“硬喂”升级。

3.2 喂卡流程表

卡数 目标技能等级 投入技能经验 喂卡流程
2 2 0 1卡+0经验
2 3 200 1卡+200经验
2 4 800 1卡+600经验, 补200经验
3 3 0 2卡+0经验, 补0经验
3 4 400 2卡+200经验, 补200经验
3 5 1400 [1卡+600经验] * 2, 补200经验
4 3 0 3卡+0经验, 补0经验
4 4 200 1卡+0经验, 2卡+200经验, 补0经验
4 5 1000 1卡+600经验, 2卡+200经验, 补200经验
4 6 3200 [1卡+600经验] * 3, 补1400经验
5 4 0 1卡+0经验, 3卡+0经验, 补0经验
5 5 600 [2卡+200经验] * 2, 补200经验
5 6 2600 [1卡+600经验] * 4, 补200经验
6 4 0 2卡+0经验, 3卡+0经验, 补0经验
6 5 400 1卡+0经验, [2卡+200经验] * 2, 补0经验
6 6 2200 [1卡+600经验] * 3, 2卡+200经验, 补200经验
6 7 5200 [1卡+600经验] * 5, 补2200经验
7 4 0 [3卡+0经验] * 2, 补0经验
7 5 200 1卡+0经验, 2卡+200经验, 3卡+0经验, 补0经验
7 6 1800 [1卡+600经验] * 2, [2卡+200经验] * 2, 补200经验
7 7 4600 [1卡+600经验] * 6, 补1000经验
8 5 0 1卡+0经验, [3卡+0经验] * 2, 补0经验
8 6 1400 1卡+600经验, [2卡+200经验] * 3, 补200经验
8 7 4200 [1卡+600经验] * 7, 补0经验
9 5 0 2卡+0经验, [3卡+0经验] * 2, 补0经验
9 6 1000 [2卡+200经验] * 4, 补200经验
9 7 3800 [1卡+600经验] * 6, 2卡+200经验, 补0经验
9 8 7900 [1卡+600经验] * 8, 补3100经验
10 5 0 [3卡+0经验] * 3, 补0经验
10 6 800 1卡+0经验, [2卡+200经验] * 4, 补0经验
10 7 3400 [1卡+600经验] * 5, [2卡+200经验] * 2, 补0经验
10 8 7300 [1卡+600经验] * 9, 补1900经验
11 5 0 1卡+0经验, [3卡+0经验] * 3, 补0经验
11 6 600 1卡+0经验, [2卡+200经验] * 3, 3卡+0经验, 补0经验
11 7 3000 [1卡+600经验] * 4, [2卡+200经验] * 3, 补0经验
11 8 6700 [1卡+600经验] * 10, 补700经验

注1:红色部分表示后续需要的组合喂法,其具体方法为

描述 解释
2卡+0经验 将A卡直接喂给B卡,得到2级狗粮
2卡+200经验 先将200经验喂给A卡,得到2级A卡,再喂给B卡,得到3级狗粮
3卡+0经验 将A、B两卡直接喂给C卡,得到3级狗粮

注2:查表时,根据同卡数(包括最后成型的1张)以及目标等级数,按流程进行。举例:

目标:11张同卡,想要喂到6级
查表得到:需要投入600经验,喂卡方法为“1卡+0经验, [2卡+200经验] * 3, 3卡+0经验, 补0经验”
操作流程:
    1. 1卡+0经验:一张卡什么都不用喂
    2. [2卡+200经验] * 3: 先将200经验喂给A卡,得到2级A卡,再喂给B卡,得到3级狗粮,反复操作3次,得到3张3级狗粮
    3. 3卡+0经验:将A、B两卡直接喂给C卡,得到1张3级狗粮
    4. 最后将1张1级卡、4张3级卡全部喂给胚子卡即可。

注3:喂卡方法不唯一,表中展示的是最少投入下可以获得最多经验溢出的方法(虽然溢出也没有用)

注4:未列出的卡数与目标等级的组合,可能是因为目标等级太高,因此需要在达到能喂到的最高等级后硬喂即可。


Similar Posts

Comments