MAS コミュニティ
artisoc質問用掲示板(アーカイブ)
  
質問掲示板は移転しました。新掲示板はこちら

質問 (解決済み)

[artisocモデル] エージェントの消し方
質問者: k973672さん , 質問日時: 2018/12/03 18:37
ある場所に辿り着いたら特定の人数を消すプログラミングの方法を教えていただきたいです。
EX)出口に到達したエージェントを3人消す 等々

お時間がよろしければ、ご回答宜しくお願い致します。



▼解決した回答


記述が不明瞭で、なぜ出口に着いたときに消さないのかわかりませんが、
出口に着いた人のうち、任意の数(3人)だけ消すという場合、
例えば、
Agt_stepのルールにおいて、
If 出口に着いた == True Then
AddAgt(Universe.arrived, my)
End if
として
Univ_step_endのルールにおいて
ad = CountAgtSet(Universe.arrived)
If ad > 3 Then
For i = 0 to 2
person = GetAgt(Universe.arrived,i)
Killagt(person)
Next i
Else
For i = 0 to ad - 1
person = GetAgt(Universe.arrived,i)
Killagt(person)
Next i
End if
とすれば良いと思います。

回答者: igaguri さん , 回答日時: 2018/12/03 18:54

▼ 全ての回答


記述が不明瞭で、なぜ出口に着いたときに消さないのかわかりませんが、
出口に着いた人のうち、任意の数(3人)だけ消すという場合、
例えば、
Agt_stepのルールにおいて、
If 出口に着いた == True Then
AddAgt(Universe.arrived, my)
End if
として
Univ_step_endのルールにおいて
ad = CountAgtSet(Universe.arrived)
If ad > 3 Then
For i = 0 to 2
person = GetAgt(Universe.arrived,i)
Killagt(person)
Next i
Else
For i = 0 to ad - 1
person = GetAgt(Universe.arrived,i)
Killagt(person)
Next i
End if
とすれば良いと思います。

回答者: igaguri さん , 回答日時: 2018/12/03 18:54
出口でエージェントが重なってしまい多くの避難者が退出してしまう問題が起きてしまいます。
その問題を解決しようとすると違うところで思っているような動きをしてしまいます。
そこで、重なってしまうのを黙認してその中で特定の人を流動係数の人数通り退出させたいのですが、どのようにするのが一番良いですか。

今、もう少しで提出で時間が無く困っています。

回答者: k973672 さん , 回答日時: 2018/12/03 21:51
重なりの問題を解決するべきかと思います。
この問題が発生している以上、流動係数を算出しても、誤ったシミュレーションモデルによる誤った結果にしかならないのではないでしょうか。
そのような研究の仕方で大丈夫なのか、指導の先生に聞いてみてはいかがでしょうか。

回答者: igaguri さん , 回答日時: 2018/12/03 21:58



Copyright © KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
( 会社情報 情報セキュリティ・個人情報について )