Artisocには、MakeAgtSetAroundOwnCell関数など、ある地点の近くにあるエージェントを検索してまとめる関数が複数標準実装されていますが、これらはどのような処理がなされているのでしょうか。
例えばこの機能をこれらの関数に頼らず実装しようとすると、最も愚直な方法として、空間に存在するすべてのエージェントについてある地点からの距離を計算し、基準より小さいものを検出するといった方法が考えられますが、これではエージェントの数が増えた際、急激に処理が重くなってしまうように思われます。このように処理が重くなることを回避するような手法が用いられているのでしょうか。用いられているのであればどのような処理がなされているのでしょうか。
MakeAgtSetAroundOwnCellなど、周りのエージェント集合を取ってくる系の関数をいくつか実装してますが、
Java側で処理しているので、自力で取得するよりは速いと思います。
ご指摘の通り、エージェント数が膨大になると、処理が重くなります。
そこで、モデル側で工夫するとすれば、
変数にエージェント集合型変数を追加して、近隣のセルのみ検索してエージェント集合を取ってくるとか、
区画を決めて管理エージェントがエージェントの移動を監視するとか、
いっそ空間をやめて、エージェント同士のネットワーク関係を保持して処理するなどありますので、ご参考まで。
毎stepすべてのエージェントがこの手の処理をするのは都合が悪いようなので何か減らせるような工夫をしたいと思います