Netlogo-使用.csv文件中的特征创建代理

时间:2015-06-04 16:13:44

标签: csv netlogo

我尝试使用其特征来自csv文件的代理填充我的世界。该文件如下所示:file

我在NetLogo的其他领域非常流利,但这是第一次潜入外部数据输入。

我曾在其他地方查看,但其他主题仅用于填充数据列表。官方帮助和字典似乎在5.1之前和之后有很大差异,所以我不确定我发现的帮助指南是否与最新版本一致。

如果生成大型列表(或列表列表),或者在逐行读取数据时,我甚至不会特别小心,它会擦除​​前面的行'生产代理后的数据。

我已尝试使用此处提供的帮助:http://netlogoabm.blogspot.com/2015/05/connecting-or-linking-turtles-from-csv.html

但这似乎会引发错误,因为我的数据不仅仅是数字。我真的很感激你的帮助。

3 个答案:

答案 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