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