从几乎随机的数据中寻找最佳/接近最佳结果

2024-05-13 17:57:58 发布

您现在位置:Python中文网/ 问答频道 /正文

在我几个月前提出这个问题的尝试失败(不够详细)之后,我要再试一次。你知道吗

基本上我正在尝试为一个游戏开发一个计算器(RuneScape)这将决定使用能力的最佳顺序,每个能力可能有自己独特的变量,一些例子(这些是实际能力):

顺序:异能名称,平均(异能)伤害,异能冷却时间(再次使用之前的时间),肾上腺素(一个0到100之间的栏位,一些异能可以在任何一个栏位使用,并在栏位上加8,其他需要,50甚至100才能使用,并将移除15/将栏位重置为0),使用异能所需的时间,最后我还包括了其他一些特别的细节。你知道吗

服务器:112.8平均伤害,冷却时间:15秒,使用任何“肾上腺素”,给予+8,需要1.8秒执行

攻击:525.6点平均伤害,冷却时间:30秒,在50点(或更高)肾上腺素消耗-15点时使用,需要4.2秒执行。你知道吗

驳船:75点平均伤害,20.4秒冷却时间,在任何肾上腺素+8的情况下使用,需要1.8秒执行,将目标束缚6.6秒。你知道吗

切片:70点平均伤害,3秒冷却时间,在任何肾上腺素+8的情况下使用,需要1.8秒执行,如果目标被束缚,将造成额外伤害(假设为1.5-为简单起见)。你知道吗

现在,假设我只需要6秒的旋转(为了简单起见),并且在50岁时开始“肾上腺素”,有多种方式来执行这些能力(例如:

  1. 先是袭击,然后是割伤
  2. 一艘驳船,接着是一片,接着是一架直升机,接着是一次小规模的攻击。你知道吗

等等。。。你知道吗

在这种情况下,一个算法可以很容易地计算出哪种方法是最好的使用暴力算法和存储的最佳解决方案。然而,这是一个简单的例子,如果我想要,比方说,10个能力超过18秒,暴力只是需要太长时间(除非有人有一个备用的量子计算机躺在附近)。除了检查随机场景之外,还有谁知道一个“启发式”解决方案,它可能不总是给出最好的结果,但却给出接近最佳的结果?你知道吗

此外,这里有一个图表显示了我做的一个模拟(不是很漂亮) enter image description here

  • 感谢所有真正能够阅读和理解我文章的人。你知道吗

Tags: 名称算法游戏目标顺序时间情况能力
1条回答
网友
1楼 · 发布于 2024-05-13 17:57:58

别忘了,对于不同的敌人,最好的顺序是不同的。例如,如果敌人有中等防御,许多生命和中等攻击,你需要在很长一段时间内造成最大伤害/时间。如果另一个敌人血量小,攻击力大,你应该爆发出最大的伤害,在他击中你之前杀死他。伟大的防守和中等的攻击需要非常强大的攻击,从你的球队和收集肾上腺素为他们和防守战术之间。你知道吗

因此,你应该根据敌人的情况来确定最好的一次或两次攻击或预先准备好的行动组合。(让我们把它们也命名为攻击)。这一部分应该通过一些复杂的if-then-else/case组合来解决。根据他们,你应该计划中间的行动(通过蛮力组合)。限制只有一个——你不应该早死。(当然,在更复杂的情况下可以改变)。什么会被优化-你的肾上腺素或生命在战斗结束或时间-这取决于你。你知道吗

如果组合学需要太多的时间,范围优化目标分为几个层次。只为一个时间间隔优化最高级别,将结果固定为下一个起点,重新设置优化目标的范围,为下一个时间间隔优化,等等。这样我们在现实生活中思考,它工作得很快,也不是那么糟糕。你知道吗

相关问题 更多 >