0

在我们的游戏中,我们有一个老板 (NPC),他的生命在一个时间间隔内被检查,比如 1 分钟。我需要找到一种方法来推断已知点(寿命,时间),并大致预测一分钟后的寿命(1分钟后将再次检查寿命,并将其放入数据集中)此外,推断需要考虑最近的变化(例如,如果我们有 10 个点,而最后两个点变化很快,它应该能够预测下一个点的变化更快)。我发现了这个这个的多个示例,但似乎我无法在 as3 代码中翻译所有这些。基本上我正在寻找的是2D Extrapolation

PS 重点是计算出来的值不能超过之前的值,因为boss的生命值不能增加,也不能保持不变;他们只能减少。我想这意味着外推是行不通的。所以我正在寻找另一种可行的算法。

4

1 回答 1

1

考虑一种受微积分启发的方法。如果我们有d[i]一个过去时间的损坏列表,i而当前时间是n,那么我们可以d[n+1]使用列表中的先前值进行估计。根据最近的值提供d[n] - d[n-1]d[n]到变化的估计,提供对该变化的变化的估计,等等。这个想法是使用差分来估计变化。如果您有一个时间序列数据 list和另一个 list ,那么所有时间 i > 1的变化都是如此。由于也是一个时间序列,您可以使用它来创建一个,链接这些术语以提供估计:d[n+1](d[n] - d[n-1]) - (d[n-1] - d[n-2])d[i] = [a,b,c,...]d2[i] = d[i] - d[i-1]d2[]d[]d2[]d3[]

d[n+1] ~ d[n]    +    ( (d[n] - d[n-1]) )  +  ( (d[n] - d[n-1]) - (d[n-1] - d[n-2]) )  +  ...
         ^last value    ^ est. change           ^est. change of change
         d[n]           d2[n]                   d3[n]

当然,这对传入数据做了很多假设。我能想到的两个最重要的问题:

  • 这假设最近的变化完全代表未来值——在变化项是非线性的情况下,这会导致估计落后于实际数据
  • 随着更多术语的添加,“滞后”变得更强——更好的估计(更多的术语)必须与更好的敏捷性(更少的术语)相平衡
  • 输入数据中的异常值直接进入方程,因此直接影响结果估计
于 2014-12-07T20:20:40.653 回答