netlogo中的灵敏度分析(多次模拟的平均值)



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

500次刻度后,模型停止。

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

有没有办法在netlogo中使用python或R?

是的,你可以使用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并绘制它的示例代码。假设一个绘图窗口小部件报告降级和降级

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

最新更新