如何在NetLogo中的每个tick中将输出数据保存在csv文件的新列中

时间:2016-06-07 12:17:21

标签: csv netlogo

我需要在netlogo的csv输出文件中保存我的模拟数据 每10个滴答我想保存几个代理的数据 但我想每次都在新列中写入数据 每次他继续投入新原料的问题 有命令或方法吗? 谢谢 这是写入文件的功能 我在每个刻度线的程序中称它为

session.beginTransaction();

我得到的结果如下

    to write-to-file [set-breed]
let n 0
let str ""
set str set-breed
  file-print (word "---------- Tick Number: " ticks "-----------") 
  foreach my-agent-list [
         ifelse ? != nobody[
         ask ? [
    file-print (word   ": (x:y)," "(" pxcor ":"  pycor"),")    
    file-type (word   ": age," age ",")
        file-print ""
     set n n + 1
    ]][
      file-type (word set-breed n ":," "dead")
      set n n + 1
       file-print "" 
       ]]   
  file-print ""  ;; blank line
  file-flush
end

所需的内容如下:

---------- Tick Number: 0-----------
  pxcor: -70 pycor: -45 age: 0
  pxcor: -61 pycor: 42 age: 0
  pxcor: -91 pycor: -16 age: 0

---------- Tick Number: 1-----------
  pxcor: -70 pycor: -45 age: 1
  pxcor: -61 pycor: 42 age: 1

1 个答案:

答案 0 :(得分:1)

在我们的Universe中,文件I / O总是按行而不是列。但是你可以利用Open Office电子表格(或excel,如果你必须)并且一步转换:

a,b,c,d,
Tick 1,5,4,2,
Tick 2,2,3,2,
Tick 3,3,5,-9,
Tick 4,3,-9,2,

进入这个,这就是我想你想要的:

a,Tick 1,Tick 2,Tick 3,Tick 4
b,5,2,3,3
c,4,3,5,-9
d,2,2,-9,2

打开csv文件,将数据复制到剪贴板,然后选择Paste Special,检查转置选项。