Netlogo - 从 .csv 文件创建具有特征的代理
Netlogo- Creating agents with traits from .csv files
我正在尝试用特征来自 csv 文件的代理填充我的世界。该文件如下所示:
我对 NetLogo 的其他领域非常熟悉,但这是第一次深入研究外部数据输入。
我在其他地方看过,但其他主题仅用于填充数据列表。官方帮助和字典似乎在 post- v 5.1 之前有很大差异,所以我不确定我找到的帮助指南是否准确到最新版本。
我什至不特别关心是否生成了一个大列表(或列表列表),或者是否在逐行读取数据时,它在生成代理后擦除前几行的数据。
我已经尝试使用此处提供的帮助:http://netlogoabm.blogspot.com/2015/05/connecting-or-linking-turtles-from-csv.html
但这似乎会引发错误,因为我的数据不仅仅是数字。我真的很感激帮助。
您可以使用新的 CSV extension 轻松读取文件。然后你应该能够遍历每一行,创建一个海龟并设置它的变量。它与 NetLogo 5.2 捆绑在一起。
您是否看过模型库 - 代码示例文件夹,'File Input Example'?
我相信你可以修改我的例子来匹配你的问题,总而言之,我首先将文件读入一个全局列表,提取代理的数量,在每个滴答时分配代理的属性和 运行 模拟:
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
我正在尝试用特征来自 csv 文件的代理填充我的世界。该文件如下所示:
我对 NetLogo 的其他领域非常熟悉,但这是第一次深入研究外部数据输入。
我在其他地方看过,但其他主题仅用于填充数据列表。官方帮助和字典似乎在 post- v 5.1 之前有很大差异,所以我不确定我找到的帮助指南是否准确到最新版本。
我什至不特别关心是否生成了一个大列表(或列表列表),或者是否在逐行读取数据时,它在生成代理后擦除前几行的数据。
我已经尝试使用此处提供的帮助:http://netlogoabm.blogspot.com/2015/05/connecting-or-linking-turtles-from-csv.html
但这似乎会引发错误,因为我的数据不仅仅是数字。我真的很感激帮助。
您可以使用新的 CSV extension 轻松读取文件。然后你应该能够遍历每一行,创建一个海龟并设置它的变量。它与 NetLogo 5.2 捆绑在一起。
您是否看过模型库 - 代码示例文件夹,'File Input Example'?
我相信你可以修改我的例子来匹配你的问题,总而言之,我首先将文件读入一个全局列表,提取代理的数量,在每个滴答时分配代理的属性和 运行 模拟:
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