いつもお世話になっております。
津波避難のシミュレーションを作成していて、TsunamiエージェントとPersonエージェントが近接した際にPersonエージェントの動きを止めるプログラムを作りたいと考えています。
GIS Converterから得た津波のデータCell.csvで、x,y座標と津波到達時間(4列目、単位:分)を得ることができました。これをもとに、到達時間に合わせて生成したいのですが良い方法はありますでしょうか?
現在、univ_Initに記載しているのですが、当然シミュレーションの最初にすべてエージェントが作成され狙いとは異なります。(universeの10行目、173-204行目)
TsunamiとPersonの近接に関しては、近接条件とTsunamiのTimeとGetcountstepを組み合わせ計算可能だと考えているので、表示に関してのみの改善でもよいと考え、universe104行目のエージェントの透明度の数値を用いて、tsunami5~行目で適宜表示させることを試しましたが、透明のエージェントがあり、かつ毎ステップ計算を行うためかかなり重くなってしまいました。
csvデータを読み込み、エージェントを時間差で表示する良い方法があればご教授いただければ幸いです。
モデルを拝見したところ、透明エージェントの影響というよりは、下記のルールを修正することで高速化できました。
Pointのルールで、For文の中で@a_star_id_arrayを複数実行するのではなく、For文の前に1回実行しておき、そのルールとコピーする。
If GetCountStep() == 1 And My.Population > 0 Then
oneRoute = @a_star_id_array(My.ID, goalPointIDArray)
for j = 0 to My.Population -1
personAgt = CreateAgt(Universe.Map.Person)
personAgt.X = My.X
personAgt.Y = My.Y
personAgt.RouteArray = oneRoute
personAgt.RouteCount = 1
universe.allPop = universe.allPop +1
next j
End If