在我们的游戏中,我们有一个老板(NPC),他的生命正在按时间间隔进行检查,比如1分钟。 我需要找到一种方法来推断已知点(生命,时间),并大致预测一分钟后的生命(将再次检查生命1分钟后,将被放入数据集) 此外,外推需要考虑最近的变化(例如,如果我们有10个点,最后两个变化很快,它应该能够预测下一点更快速的变化)。 我找到了多个示例this one和this one,但似乎我无法在as3代码中翻译所有这些内容。基本上我所寻找的是 2D外推。
P.S。关键是任何计算出的值都不应高于任何先前的值,这是因为老板'生命值不能增加,也不能保持不变;他们只会减少。我想这意味着外推不会。所以我正在寻找另一种算法。
答案 0 :(得分:1)
考虑一种基于微积分的方法。如果我们在过去d[i]
有一个损失列表i
且当前时间为n
,那么我们可以使用列表中的先前值估算d[n+1]
。 d[n] - d[n-1]
根据最近的值提供从d[n]
到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[]
所有时间的变化i> 1.由于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]
假设这对输入数据进行了批次假设。我能想到的两个最重要的问题: