netlogo 中的敏感性分析(多次模拟的平均值)

sensitivity analysis (mean of multiple simulations) in netlogo

我有几个指标,比如变量的均值和标准差。

500 个刻度后,模型停止。

我想模拟这个模型,例如,100 次并绘制指标的平均值和 CI。

不使用 python 或 R,有什么方法可以在 netlogo 中做到这一点?

是的,您可以使用 BehaviorSpace 运行 您的模型 100 次,将您想要的结果保存到文件系统文件中,然后让不同的 netlogo 程序(或过程)读入数据和绘图它。这是一个示例写作部分,计算 运行 个数字的均值和标准差,并在十个刻度停止后。

globals [ delist demean destd fname ]

to setup
  clear-all
  set fname "myfile.txt"
  set delist []
  reset-ticks
end

to go
  if ( ticks >= 10 ) [
    ;; show delist
    set demean mean delist;
    set destd standard-deviation delist;
    export-data
    ;;print (word "mean = " demean " stdev= " destd )
    stop
  ]
  set delist lput random 100 delist
  tick
end

to export-data
  if not (file-exists? fname ) [
    file-open fname
    file-print ( word "mean stdev" );
    file-flush
    file-close
  ]
  
  file-open fname
  file-print ( word  demean " " destd  )
  file-flush
  file-close
end

to clear-file
 if  (file-exists? fname ) [
    file-delete fname
  ]
end

这是读取上面 myfile.txt 并绘制它的示例代码。 假设一个绘图小部件报告 demean 和 destd

globals [ delist demean destd fname ]

to setup
  clear-all
  set fname "myfile.txt"
  print " This file begins as follows:"
  set delist []
    ifelse   (file-exists? fname ) [
      file-open fname
      if  not file-at-end? 
       [ let str file-read-line 
         print str
      ]
    ]
  [  print " expected file doesn't exits " ]

  reset-ticks
end

to go
  if file-at-end? [ print "Data has been all read."  file-close stop]
  set demean file-read 
  set destd file-read  
  print (word "mean = " demean " ,  std-dev = " destd )
  tick
end