飞道的博客

数学模型 | “黄金分割率”数学模型的现实实例与求解方法

284人阅读  评论(0)

  不好意思,这里没有0.618,只有……王者荣耀和诸葛亮!
  话说昨天数小魔和小π一起开黑的时候,怎么都打不赢,本魔决定建模处理,下次和小π一起玩不能再输惹TAT

问题背景
王者荣耀是近年来大火的一款游戏,考验的不止是团队协作能力,还有操作、意识和对细节的把控。而在英雄池中,有一绝对热门的法师英雄,那就是诸葛亮咯~
相信很多召唤师用他的大招收割的时候,总是“看一眼,凭感觉”,有时莫名其妙就差一点点,而让对面溜了。还在担心大招释放的时机不对?我们可以为他的大招建立一个数学模型,让诸葛亮称为真正的“神机妙算者”。由于诸葛亮是一个“贴脸”法师,我们在这里给他带上“终结”,以最大化他的输出。


问题重述

 诸葛亮的大招“元气弹”和召唤师技能“终结”已经准备完毕,请建立合理的数学模型,使得大招和终结释放后,诸葛亮的收益最大。
 这两个技能的官方表述如下:

(1)终结:立即对身边敌军英雄造成其已损失生命值14%的真实伤害
(2)元气弹:诸葛亮短暂蓄力后向锁定目标 发出一枚强力元气弹,造成一定法术伤害,目标每损失1%最大生命值时元气弹就会增加2%伤害

模型假设

  1. 假设元气弹的收割效果(返还冷却)不影响此处收益的判断,即击败目标时,两种技能施放顺序的收益认为相同。
  2. 假设敌方英雄法抗(削弱法术伤害的能力)很低,可忽略不计。
  3. 假设没有外界英雄干扰,诸葛亮也只剩下这两个技能,即这两个技能的释放唯一确定了诸葛亮的收益。

符号说明
符号 意义
p 敌方英雄剩余生命比例
(0<p<1)
HP 敌方英雄生命上限值
x 诸葛亮大招“元气弹”
的初始伤害
问题分析
首先假定敌方英雄剩下比例的生命(0<p<1),即剩下p*HP的生命值。这个问题里,诸葛亮的两个技能伤害都可表示为p的函数,因此首先找到这两个技能分别与p的函数关系,再结合技能释放顺序精准计算出能够释放多少伤害,最后画出两个函数图像,就可以清楚地知道怎么释放顺序收益最大了。

模型建立与求解

令元气弹的伤害与剩余生命比例满足函数关系 ,由技能描述可知,

又令终结的伤害与满足函数关系,由技能描述可知,

下面分两类讨论:先放大招再终结,先放终结再放大招。
(1)先放大招。那么放完大招后,目标生命值发生改变,即

生命比例变为

终结的伤害按照这时的生命比例计算(若直接击败,则为0),即

总伤害值为

(2)先放终结。放完终结后,目标生命值同样发生改变,此时的计算公式为

大招伤害值按此时的计算(若直接击败,则为0),即

总伤害值为

比较两个总伤害值的大小即可。

模型结论
为了让大家更直观地感受到这个数学模型的实用价值,我们用实战(不就训练营么…)的数据代入计算。这里我们的对手选择可(ku)爱(bi)的小鲁班七号。
本次实战的数据如下:鲁班七号的生命上限为5989,诸葛亮的大招基础伤害为936.代入两个总伤害的函数,并借助Matlab绘图,我们可以很直观地感受到模型分析的结果:(图像如下)

分析两个函数图像,我们得出两个结论:
(1)无论什么情况下,先放大再终结总是收益更高。
(2)在鲁班七号生命低于40%时,无论怎么连击总能击败鲁班七号。

模型评价

 模型的优点很明显,给定生命值和大招初始伤害时,可以精确无误地算出什么时候出手万无一失,同时教会大家要先放大再终结(虽然诸葛亮带的都是净化嘤嘤嘤)
 该模型同样存在缺点,比如模型假设部分,我们忽略了魔抗的作用,那么这个假设对于坦克型英雄来说就与实际情况相差很远了。同时,忽略了回响之杖、痛苦面具等特殊装备的加成,导致算出来的结果虽然万无一失,但是不能出奇制胜。

参考文献(略)
附录:Matlab程序源码

HP=5989;
x=936;
p=0:0.01:1;
Damage1=x*(3-2p)+0.14HP*(1-p+x*(3-2p)/HP);
Damage2=x
(3.28-2.28p)+0.14HP*(1-p);
Present=p*HP;
plot(p,Damage1);
xlabel(‘剩余生命比例’);
ylabel(‘伤害量’);
hold on;
plot(p,Damage2);
plot(p,Present);
legend(‘先开大再终结’,‘先终结再开大’,‘当前剩余生命值’);
hold off;

来源:山东大学
文案 / 陈诺
编辑 / 杨汉、铁鑫
责任编辑 / 崔雨濛


转载:https://blog.csdn.net/mli168/article/details/113919535
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场