我尝试使用其特征来自csv文件的代理填充我的世界。该文件如下所示:
我在NetLogo的其他领域非常流利,但这是第一次潜入外部数据输入。
我曾在其他地方查看,但其他主题仅用于填充数据列表。官方帮助和字典似乎在5.1之前和之后有很大差异,所以我不确定我发现的帮助指南是否与最新版本一致。
如果生成大型列表(或列表列表),或者在逐行读取数据时,我甚至不会特别小心,它会擦除前面的行'生产代理后的数据。
我已尝试使用此处提供的帮助:http://netlogoabm.blogspot.com/2015/05/connecting-or-linking-turtles-from-csv.html
但这似乎会引发错误,因为我的数据不仅仅是数字。我真的很感激你的帮助。
答案 0 :(得分:1)
您可以轻松使用新的CSV extension读取文件。然后你应该能够遍历每一行,创建一个乌龟并设置它的变量。它与NetLogo 5.2捆绑在一起。
答案 1 :(得分:1)
您是否看过模型库 - 代码示例文件夹,'文件输入示例'?
答案 2 :(得分:1)
我相信您可以修改我的示例以匹配您的问题,总而言之,我首先将文件读入全局列表,提取代理数量,在每个时钟点分配代理属性并运行模拟:
extensions [csv]
Breed [Drivers Driver]
turtles-own[
Name
List-Of-Actions
]
globals [li]
to setup
ca
set li []
file-open "Time.csv"
load-Files-And-Set-The-List
CreateDrivers
Set-Agents-List-Of-Actions
reset-ticks
end
to load-Files-And-Set-The-List
if file-at-end? [ stop file-close ] ;; protect against end of file
while [not file-at-end? ]
[
let _line (csv:from-row file-read-line ",")
set li lput _line li
]
end
to Set-Agents-List-Of-Actions
let t []
foreach li
[
if position ? li > 0
[
ask turtles with [Name = (item 0 ?)]
[
set hidden? false
set List-Of-Actions lput ( list (item 1 ?) (item 2 ?) (item 3 ?)) List-Of-Actions
]
]
]
end
to go
ask Drivers
[
foreach List-Of-Actions
[
if ticks = (item 0 ?)
[
move-to patch (item 1 ?) (item 2 ?)
set List-Of-Actions remove ? List-Of-Actions
]
]
]
tick
end
to-report Driver-Names
let DriverNames []
foreach li
[
if position ? li > 0
[
set DriverNames lput (item 0 ?) DriverNames
]
]
set DriverNames remove-duplicates DriverNames
report DriverNames
end
to CreateDrivers
resize-world 0 500 0 3
set-patch-size 60
let n length Driver-Names
Foreach Driver-Names
[
create-Drivers 1
[
set Name ?
set shape "car"
set size 1
set hidden? true
set List-Of-Actions []
]
]
end