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

質問  (回答受付中)

[artisocモデル] ポイントエージェントから歩行者の生成方法について
質問者: へいさん , 質問日時: 2020/11/18 14:18
以下の質問の回答を拝見しました。

--------------------------------------------------------------------------
(質問)
地図上に複数のポイントエージェントとリンクエージェントで通路を作成し、各ポイントからそれぞれ違うタイミングで避難者エージェントをを生成し、目的地へ向かわせるシミュレーションを作成したいのですが、複数のそれぞれのポイントから避難者エージェントを生成する方法がわかりません。

一つのポイントエージェントから指定した人数を生成することはできるのですが、複数のポイントから避難者エージェントを生成するには、そのポイントごとに同じプログラムを一つずつ作成していかなければならないのでしょうか。

--------------------------------------------------------------------------
これに対しての回答について考え方は理解したのですが、ルールエディタの書き方がわかりません。
各ポイントから違うタイミングで避難者エージェントを生成したい場合のRnd()を使った、発生確率を与えるルールの書き方と、

「エリア毎に避難するタイミングが異なる場合(例えば、津波が発生し海岸線に近い場所から逃げ始める)は、ポイントのID(あらかじめ海岸に近いポイントのIDを調べておく)を指定して発生確率とタイミングを指定できます。」この方法のルールエディタの書き方を教えていただきたいです。



▼ 全ての回答


発生するエリアと発生確率を変えた場合のサンプルです。

pointIDArray = "0,1,2"
For i = 0 To CountToken(pointIDArray) - 1
If GetCountStep() < 10 And Rnd() < 0.5 Then
If My.ID == CInt(GetToken(pointIDArray, i)) Then
personAgt = CreateAgt(Universe.Map.Person)
personAgt.X = My.X
personAgt.Y = My.Y
personAgt.RouteArray = @dijkstra(My.ID,"23")
personAgt.RouteCount = 1
personAgt.Color = COLOR_BLUE
End If
End If
Next i

pointIDArray = "13,14,15"
For i = 0 To CountToken(pointIDArray) - 1
If (GetCountStep() > 50 And GetCountStep() < 60) And Rnd() < 0.5 Then
If My.ID == CInt(GetToken(pointIDArray, i)) Then
personAgt = CreateAgt(Universe.Map.Person)
personAgt.X = My.X
personAgt.Y = My.Y
personAgt.RouteArray = @dijkstra(My.ID,"23")
personAgt.RouteCount = 1
personAgt.Color = COLOR_BLUE
End If
End If
Next i

回答者: m.tamada さん , 回答日時: 2020/11/18 16:54



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