UnityのNavmeshAgentについて

色々やってみてわかったけど、新たなポジションが決定されていても、

どうやら経路探索中はremainingdistanceがゼロの状態みたいらしく、

距離だけで状態をチェックすると、移動先ターゲットが変わった瞬間に到着判定(remainingdistance==0)してしまうっぽい

 

探索中かどうかのチェックはnavmeshAgentのPathPendingで判定できますのでこれをうまく使ってください

厳密にはPathpendingは探索中かどうかのチェックではないのだが(正確には経路が準備できてるかどうか)

同じ用途で使えるはず

ハミルトニアンモンテカルロ法は提案分布q(Ucandi|Ui-1) として、Ui-1に運動量Pを与えて一定の時刻後の位置をUcandiとする

 

よく使われるリープフロッグ法 (Pが運動量、pが事後確率とする)

・多変量正規分布からサンプリングする P0~Nv(P0|0,I)

 

・U0=Ui-1として運動量を以下のように更新する

 P1=P0+1/2 * ε*∇log(p(u0))

 

・下記の更新式をJ=1、2、3、、、L-1に関して計算する

 Uj=Uj-1+εPj  …Uj-1に運動量一回分を足してUjとする

  Pj+1=Pj+ε*∇log(p(uj))   …運動量もUjに応じて更新する

 

・j=L-1のUとPを最終候補とする

 

最終UとPについてはMCMC法と同じく、min(1,r)>rand()で決定する

 

function leapflog (gradiant, P0初期値, U0初期値, L, e)

 U=U0

 P=P0+0.5*e*grad(U)

 for i in 1:L-1

  U+=eP

  P+=e *grad(U)

 end

 U+=eP

 P+=0.5*e*grad(U)

end

予測と意思決定は混同されることが多いが、完全な別物である

予測は確率を見積もること

意思決定は文字通り決定すること

 

例として

競馬のとあるレースで、3番の馬が勝ちそうだ、という「予測」を立てる

その予測をもとに払戻金なども考慮して最適な馬券を「意思決定」する

というプロセスがある

 

勝てるものにかけることが最適戦略とは限らないことに注意