我正在研究一个Netlogo的模型,我在理解如何建立一个“实验”方面遇到了问题。在我的模型中,我有一个矩阵,它包含我感兴趣的所有值(总共6),每当满足某个条件(每次X海龟被杀死时),矩阵都会更新,基本上是在那个时候捕获模型的快照。矩阵中的先前值被清除,因此矩阵是1x6,而不是10000x6矩阵,每个快照只更新一行。
我想做的是建立一个实验来运行我的模型几百次,每次收集这个矩阵的第一个X数的快照,或直到Y蜱发生。但我看不出有什么办法能在实验中做到这一点?
这是可行的吗,还是我必须创建100x6 (100个快照),然后以某种方式将该矩阵导出到CSV?
我从来没有在Netlogo上做过实验,所以这可能是非常容易做到的,或者是完全不可能的。
发布于 2020-03-11 00:58:48
如果我正确地理解了您的问题,那么您希望在运行过程中以特定的刻度来报告6个值。这些蜱是通过满足某种条件而不是一定数量的蜱来选择的。NetLogo有一个名为BehaviorSpace的实验管理工具。简单地设置您的数百次运行(可能对滑块上的任何输入都有不同的值)。只输出某些滴答就不那么简单了。
BehaviorSpace对话框中的每一个滴答或结尾都有一个复选标记。如果您将其设置为每一个滴答,那么您可以导出您的六个数字,每个滴答自动。在您的情况下,这样做可能比偶尔尝试和只输出更容易。您可以添加第七个报告,这是正确/假的矩阵是否正在重置此勾标。那么,在后处理过程中,您所要做的就是选择第七个记者为真的行。
如果您想要精确地运行N个快照的模型,那么还需要设置一个全局变量,该变量将在每个快照点上递增。然后,您的BehaviorSpace设置将使用该计数器作为停止条件。
发布于 2020-03-10 21:09:42
我不确定我是否理解你的问题,但通常你会有一个设置函数和一个运行函数,对吗?因此,我猜下面的代码结构应该是您要寻找的代码结构。我已经有一段时间没有使用网络标识了,所以你必须自己找出确切的矩阵代码。
globals your-1by6-matrix your-100by6-matrix
to setup
;reset your experiment
end
to run
;run your experiment
end
to run100times
repeat 100[
setup
run
;save your 1by6matrix into your 100by6matrix
]
;use your 100by6matrix to plot or export
endhttps://stackoverflow.com/questions/60538386
复制相似问题