-
Notifications
You must be signed in to change notification settings - Fork 2
Agent の拡張
noda50 edited this page Dec 31, 2014
·
14 revisions
- 初期設定
-
initByConf()
: generation_file に記載されたエージェントの Config (JSON を読み込んだ Term 形式) から、 必要なパラメータ設定を行う。 各クラスごとに再定義されるべき。- Config は、JSON 形式の generation_file では、"agentType" の "config" に記載される。
- CSV 形式(Ver.1) では、第3カラムにJSON形式でConfigを記載する。
-
- 移動関係
-
current_link
: 現在のリンク。 -
prev_node
: リンク上の後方のノード。(direction によって、current_link の fromNode または toNode) -
next_node
: リンク上の前方のノード。(direction によって、current_link の toNode または fromNode) -
position
: リンク上の位置。リンクの fromNode からの距離。
-
- directive関係
-
isKnownDirective()
: routePlan に含まれる directive が、知っている directive かどうかを判定。 各エージェントクラスで、必要に応じて再定義しなければならない。 -
pushPlaceTagInDirective()
: directive に含まれる経由点タグ情報を取り出す。 初期設定で、ゴールまでのダイクストラを行うのに必要。 各エージェントクラスで、direcive毎に必要なタグ情報を取り出すよう、このメソッドを再定義しなければならない。
-
- abstract methods
-
prepareForSimulation()
: シミュレーションの開始時に呼ばれる。(?) -
preUpdate()
: update()
-
- 移動関係
-
speed
: 移動速度(?) -
direction
: リンク上の向き。toNode に向かっていれば、1.0。fromNode に向かっていれば、-1.0。 -
preUpdate()
: ここで、スピードを決めている。また、スピードに応じて、移動の予約(move_set
)をしている。 -
move_set()
: 移動先の場所としてnext_position
を決めている。- 2引数が expected 用。3引数がそれ以外用。中で
navigate()
を呼んでいる。 3引数の第三引数は、WaitDirective のためにある。 false なら wait に対応する処理をする(次のリンクに移らない)。 - StopTime という機能がここで実装されている。間欠的に stop/go を繰り返すリンク。 タグになにか追加で情報を付加する模様。 これにより、リンクに StopTime という情報が追加される。これにより、間欠的なstop/goを判断。 これらの定義は、OBNode にある。
- 2引数が expected 用。3引数がそれ以外用。中で
-
update()
:preUpdate()
で求めた行動予定を実行する。 実際にはmove_commit()
を呼んでいる。 -
move_commit()
: position に next_position を代入。 ただし、next_position が負あるいはリンクの長さより大きい時 (リンクを通り過ぎている時)、 次のリンクへ移る計算をする。 その計算は、navigate()
で行なっている。 -
navigate()
: 次に選ぶべきリンクを決定している。 次に向かうリンクは、sane_navigation()
で行なっている。 -
sane_navigation()
: 単にsane_navigation_from_node()
を呼ぶのみ。 -
sane_navigation_from_node()
: コスト最小の分岐を探している。 コスト計算にはcalcWayCostTo()
を使っている。 -
calcWayCostTo()
: 予めダイクストラで求めた、ゴールまでの距離。
-
- ルート関係
-
class CheckPoint
: 通過した地点(Node)情報。経由時刻などを含む。 -
route
: 通過した地点情報列。CheckPoint の列。 -
routePlan
: 計画されている経路。class RoutePlan
のインスタンス。 現在の経過状態を示す indexを中に持つ。 -
tryToPassNode()
: リンクを終えて、次のリンクに行くノードの通過処理。 中で、calc_next_target()
を呼んでいる。 -
calc_next_target()
: もしノードを通過中なら、routePlan を1つ進める。 その上で、現状のターゲット(ノードを通過した場合は1つ先のターゲット)を返す。 -
calc_speed()
: おそらく、social force model に基づき、速度を求めている。 求めた速度は、speed
変数に代入。
-
- 移動関連
-
preUpdate()
: ここで、WaitDirective の判定を行なっている。 directive によって、doWaitUntil()
,doWaitFor()
を呼び出す。 wait しない場合はsuper.preUpdate()
、 すなわち RunningAroundPerson のpreUpdate()
を実行。 -
doWaitUntil()
: リンク上のイベントタグを待つ。待っている間は、doWait()
を呼び出す。 -
doWaitFor()
: 一定時間過ぎるまで待つ。待っている間はdoWait()
を呼び出す。 -
doWait()
: 待つ処理。how によって、scatter()
かpack()
を呼び出す。 -
scatter()
: できるだけ広がって待つ。計算方法はよくわからない。 -
pack()
: できるだけ前に詰める。calc_speed()で求めたspeedでできるだけ詰める。 -
calc_next_target()
: WaitDirective を含めた routePlan での、次のターゲットを見つける処理。 ([2014.12.30 I.Noda] 現状で間違っている可能性大)
-
- 移動関係
-
recordTrail()
: 経由点の記録。
-
- 移動関係
-
calcWayCostTo()
: goal までの距離に、ノイズを乗せてコストとする。 ノイズの大きさは、margin というパラメータ。
-
- 移動関係
-
calcWayCostTo()
: goal までの距離に、その道の込み具合と、これまでたどった道の忌諱度を加味して返す。 混雑回避、同じ道路を通らないという性質を表すためのもの。
-