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

时间:2017-06-27 03:56:33

标签: python algorithm heuristics

几个月前我没有尝试提问这个问题(不够详细)后,我还要再试一次。

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

顺序:技能名称,平均(能力)伤害,能力冷却时间(可以再次使用之前的时间),肾上腺素可用于(一个位于0到100之间的杆,某些技能可用于任何和添加8到栏,其他需要,50或甚至100使用,将删除15 /将栏重置为零),使用能力所需的时间,最后我包括任何其他特殊细节。

Sever:平均伤害112.8,冷却时间:15秒,在任何&#34;肾上腺素&#34;中使用,给予+8,执行需要1.8秒

攻击:平均伤害525.6,冷却时间:30秒,用于50(或更高)肾上腺素带走-15,需要4.2秒才能执行。

驳船:75平均伤害,20.4秒冷却时间,用于任何&#34;肾上腺素&#34;给出+8,执行需要1.8秒,将目标绑定6.6秒。

切片:70次平均伤害,3秒冷却,在任何肾上腺素给予+8时使用,需要1.8秒才能执行,如果目标被束缚,将会处理(假设为1.5 - 为简单起见)额外伤害。

现在,假设我只想进行6秒钟的旋转(为简单起见),并开始了#34;肾上腺素&#34;在50岁时,会有多种方法来执行这些能力(例如):

  1. 突击,然后是服务器
  2. 驳船,然后是切片,接着是一个切断点,接着是一个小攻击。
  3. 等等......

    在这种情况下,算法可以使用强力算法轻松计算哪种方法最佳,并存储最佳解决方案。然而,鉴于这是一个简单的例子,如果我想要,比如说超过18秒的10个能力,蛮力只需要太长时间(除非任何人有闲置的Quantum计算机)。除了检查随机场景之外,任何人都会知道&#34;启发式&#34;解决方案可能并不总能给出最好的结果,但是接近最佳?

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

    • 感谢任何真正设法阅读并理解我的论文的人。

1 个答案:

答案 0 :(得分:0)

不要忘记,对于不同的敌人,最佳顺序会有所不同。例如,如果敌人具有中等防御,许多HP和中等攻击,则需要长时间造成最大伤害/时间。如果另一个敌人拥有小型HP和极大的攻击力,你应该爆发出最大的伤害,在他击中你之前杀死他。中等攻击的强大防御需要来自你身边的非常强大的攻击,并为他们收集肾上腺素和两者之间的防御战术。

所以,根据敌人的说法,你应该定义最好的一两次攻击或预备修复的动作组合。 (我们也将它们命名为攻击)。这部分应该通过一些复杂的if-then-else / case组合来解决。据他们说,你应该计划中间动作(通过蛮力组合学。限制只有一个 - 你不应该早点死。(当然,它可以在更复杂的情况下改变)。什么将被优化 - 你的肾上腺素或HP在战斗的最后或时间 - 这取决于你。

如果组合体花费太多时间,则范围优化目标分为几个级别。仅针对一个时间间隔优化最高级别,将结果固定为下一个起始点,重新排列优化目标,针对下一个时间间隔进行优化,等等。这种方式我们在现实生活中思考,它的工作速度快而且不那么糟糕。