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

質問 (解決済み)

[artisocモデル] [artisocモデル] 時間計測とデータ出力
質問者: seinenさん , 質問日時: 2020/09/30 17:17
先日 https://mas-auth.kke.co.jp/board/item/index.php?q=379 にて質問した者です

質問での返答内容を踏まえ、今回の条件に基づいて以下のように設定したのですが、出力以前の段階である時間計測の設定に問題があるようで依然として結果が出力されていない状況です
明白な誤りはなくすように努めましたが、もしできましたら、問題点を指摘して頂くことはできますでしょうか

なお以下に書いている内容を説明すると
MakeOneAgtSetAroundPositionを用いて、時間計測を行うスタート地点及びゴール地点に差し掛かったエージェントを集める

それぞれの地点において通過した時間を取得して保存しておくとともに、ゴール地点においては所要時間を算出するために保存していたスタートでの時間を用いる

所要時間を出力する

となっております。


Univ_Init{

Dim outputline As String

If (OpenFile("計時結果.csv", 2, FILE_WRITE)) Then
outputline = "ID, 所要時間"
WriteLnFile(2, outputline)
End If

}



Univ_Step_Begin{
Dim 開始時間 As Integer
Dim 所要時間 As Integer
Dim AllAgt As AgtSet
Dim tmp As Agt
Dim outputline As String

MakeOneAgtSetAroundPosition(AllAgt, Universe.Road, 座標, 0, 1, Universe.Road.Agt)
For each tmp in AllAgt
If tmp <> 0 Then
tmp.開始時間 = GetCountStep() //開始時間取得
End If
Next tmp

MakeOneAgtSetAroundPosition(AllAgt, Universe.Road, 座標, 0, 1, Universe.Road.Agt)
For each tmp in AllAgt
If tmp <> 0 Then
tmp.所要時間 = GetCountStep() - tmp.開始時間 //所要時間取得
outputline = CStr(tmp.ID) & "," & CStr(tmp.所要時間)
WriteLnFile(2, outputline)
Else
End If
Next tmp

}

長文となってしまいましたがよろしくお願いいたします



▼解決した回答


追加でいただいたファイル出力時のステップ数についてですが、
これは必ず出力されます。

回答者: m.tamada さん , 回答日時: 2020/10/02 18:15

▼ 全ての回答


前回に続けて回答します。

いただきましたモデルを確認しましたところ、

Univ_Step_Beginにて、
MakeOneAgtSetAroundPositionに「座標」と記述されていますが、これは、X座標、Y座標をそれぞれ指定する必要があります。
また、Universe.Road.Agt と記載されておりますが、「Agt」は予約語のため、エージェント型名として定義できません。(例えば、「Person」などの名前に変更する必要があります。)

これらを踏まえて書き直しますと、以下のとおりです。
※スタートとゴールの座標については適宜修正ください。

Dim StartX As Double, StartY As Double
Dim GoalX As Double, GoalY As Double

StartX = 1
StartY = 1
GoalX = 10
GoalY = 10

MakeOneAgtSetAroundPosition(AllAgt, Universe.Road, startX, startY, 0, 1, Universe.Road.Person)
For each tmp in AllAgt
tmp.開始時間 = GetCountStep() //開始時間取得
Next tmp

MakeOneAgtSetAroundPosition(AllAgt, Universe.Road, goalX, goalY, 0, 1, Universe.Road.Person)
For each tmp in AllAgt
tmp.所要時間 = GetCountStep() - tmp.開始時間 //所要時間取得
outputline = CStr(tmp.ID) & "," & CStr(tmp.所要時間)
WriteLnFile(2, outputline)
Next tmp


それから、モデルの実行が終了したらファイルをクローズする必要があるため、
Univ_Finishに

CloseFile(2)

を記述してください。

回答者: m.tamada さん , 回答日時: 2020/10/01 13:16
追加でいただいたファイル出力時のステップ数についてですが、
これは必ず出力されます。

回答者: m.tamada さん , 回答日時: 2020/10/02 18:15



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