MAS
コミュニティ
artisoc質問用掲示板(アーカイブ)
質問掲示板は移転しました。新掲示板は
こちら
。
質問 (解決済み)
[artisocモデル] エージェント同士が重ならない方法
質問者: kazunoriさん , 質問日時: 2019/12/10 17:21
現在、ダイクストラ法を用いて避難シミュレーションをしています。
人エージェントの数が多くなると、交差点などで人エージェント同士が重なって進んでしまう現象が起きてしまいます。
そこで、片方が停止するなどして重ならないようにしたいのですが、何か良い方法はありませんでしょうか?
makeoneagtsetaroundownを用いて考えてみましたがなかなかうまくいきませんでした。
▼解決した回答
いろいろやり方があると思いますが、
makeoneagtsetaroundown()を使ってうまくいかない理由として、おそらく自分の進行方向の前だけでなく後ろのエージェントも取ってきてしまっているため、それでデッドロックが発生しているのではないでしょうか。
それを防ぐためには、取ってきたエージェントに対して、自分の進行方向の前にいるかどうか判定し、自分の前にいる場合は自分が停止するというルールを追加すると回避できると思います。
自分の前にいるかどうかは、自分と相手の座標位置とDirectionから幾何学的に判定することもできます。
また、ターゲットとなるノードとの距離を用いることで相手が前にいるかどうか判定する方法もあると思います。
回答者: igaguri さん , 回答日時: 2019/12/11 17:41
▼ 全ての回答
いろいろやり方があると思いますが、
makeoneagtsetaroundown()を使ってうまくいかない理由として、おそらく自分の進行方向の前だけでなく後ろのエージェントも取ってきてしまっているため、それでデッドロックが発生しているのではないでしょうか。
それを防ぐためには、取ってきたエージェントに対して、自分の進行方向の前にいるかどうか判定し、自分の前にいる場合は自分が停止するというルールを追加すると回避できると思います。
自分の前にいるかどうかは、自分と相手の座標位置とDirectionから幾何学的に判定することもできます。
また、ターゲットとなるノードとの距離を用いることで相手が前にいるかどうか判定する方法もあると思います。
回答者: igaguri さん , 回答日時: 2019/12/11 17:41
Copyright © KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
(
会社情報
|
情報セキュリティ・個人情報について
)