2014-12-07 75 views
0

在我們的遊戲中,我們有一位老闆(NPC),他的生命正在一段時間內被檢查,比如說1分鐘。 我需要找到一種推斷已知點(生命,時間)的方法,並在一分鐘後近似預測生命(1分鐘後生命將再次檢查,並將放入數據集) 此外,外推法需要考慮大多數最近的變化(例如,如果我們有10分,而後兩個變化很快,那麼它應該能夠預測下一個點更快的變化)。 我發現多個示例this onethis one,但似乎我無法在as3代碼中翻譯所有這些內容。基本上我在找的是2D外推根據變化率計算敵方的生命值(外推)?

P.S.問題是任何計算的值都不應該高於以前的值,這是因爲老闆的生命值不能增加,也不能保持不變;他們只能減少。我想這意味着推斷不會。所以我正在尋找另一種算法。

回答

1

考慮微積分啓發式的方法。如果我們在過去的時間i有一個d[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[]是所有倍I> 1.由於d2[]也是一個時間序列,你可以用它來創建一個d3[]d[]的變化,鏈接條款提供的估計:

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] 

誠然,這使得有關傳入的數據假設的很多。我能想到的最重要的兩個問題:

  • 這假定最近的更改(S)是完全代表在變化項是非線性的情況下,未來值 - 的,這將導致估計落後於實際數據
  • 作爲多個項被添加的「滯後」變得越強 - 的更好的估計(多個項)都必須具有更好的靈活性來平衡(以下術語)
  • 離羣值中的輸入數據圖形直接進入方程,從而直接影響估算結果
+0

這看起來不錯。對於未知數量的數據點,是否有可能用某種遞歸函數來總結這一點?謝謝! – 2014-12-07 20:29:59

+0

這個想法是使用差分來估計變化。如果你有時間序列數據列表'd [i]'和另一個列表'd2 [i] = d [i] - d [i-1]',那麼'd2 []'是'd []'所有時間'i> 1'。由於'd2 []'也是*時間序列,您可以繼續這樣做並鏈接這些術語。我猜想,在一個點之後,這些條款會停止相關......個人而言,我會保留一定數量的條款積壓,同時增加新的條目,同時刪除最舊的條目。 – Conduit 2014-12-07 21:08:05

+0

因此,基本上如果您決定3個術語「足夠好」,則保留最後三個損傷值的列表並應用上述功能。從初始值爲0(無損傷)開始,然後循環 - 如果前三個損傷測量值爲1,5,10,20,則列表變爲[0,0,0] - > [1,0,0] - > [5,1,0] - > [10,5,1] - > [20,10,5]。在每次推/推後重新計算估計值。 – Conduit 2014-12-07 21:12:17