schoolに避難させるため、以下のように避難所の設定を行いました。
Dim schoolAgt As Agt
Dim i As Integer
For i=0 To CountAgt(Universe.Map.School) - 1
schoolAgt = Universe.Map.School(i)
schoolAgt.GoalArray = "0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19" // ゴールのPointID配列
Next i
また、dijkstra関数の呼び出しの際に第2引数が空ということで同様に避難所のIDを示すものをUniverse.map.pointとUniverse.map.perseonの両方のルールに文字列型で加えました。
newRoute = @dijkstra(startPointAgt.ID, Universe.Map.School.GoalArray) →Personのルール
routeArray = @dijkstra(CStr(My.ID), Universe.Map.School.GoalArray) →Pointのルール
そうしたところシミュレーション初期の120分119分時点では避難前人数におかしな点はなかったのですが、118分以降になると避難前人数がマイナスになりそこからステップごとに避難中人数が大幅に増加してしまいます。
また、元としているモデル(masコンペ2018:芦屋を対象とした津波からの避難モデル)ではケースを昼間に設定すると人数が増えないようなのですが理由がわかりません。
芦屋のモデルのUniv_initに書かれている
If StrComp(Left(Universe.CaseList, 2), "昼間") == 0 Then
// 学校の読込み
file_read_school()
を自分のモデルに加えてケースを昼間にすると、120分時点で総避難者数が45780人が86580人に増加してしまいます。
モデルのどこを直せばいいのかを教えていただきたいです。よろしくお願いいたします。
加えてなのですが、シミュレーション自体が終わるまでに2時間ほどかかってしまうのですが、これはpcのスペックの問題でしょうか?時短できる方法があれば教えていただきたいです。
芦屋避難シミュレーションを元にモデルを作成しているとのことで、
まずは、芦屋避難シミュレーションの全てのルールを読むことをおすすめします。
その上で、分からないことがあれば質問ください。
避難中の人数が大幅に増加するのであれば、避難者を生成している箇所(CreateAgtしているはず)を探して、自分の意図したとおりに動作しているかを確認してください。
ちなみに、芦屋避難シミュレーションでは、Univ_Initのfile_read_buildingで建物ごとの人数を読み込み、近傍のPointに割り当てて、Pointのルールで避難者を生成しています。
シミュレーションに時間がかかる件は、動作環境の性能に依存します。
数万人ではなく、避難者が11種類であれば、11人で動作するモデルを作成し、その後、数万人に増やして動作させることをおすすめします。