我有一个没有全局值的模拟。相反,在两次实验之间更改的两件事是所使用的品种以及设置中的tick数(行为空间开始记录结果之前的转数)
当前,我正在复制每个行为空间并进行较小的更改,是否有更好的方法来做到这一点,以便我可以对所有行为空间进行一次编程?
有许多不同的方法可以执行此操作,但是由于您没有向我们提供很多有关您要执行的操作的信息,因此我将提出一些非常笼统的信息。您应该能够使其适应您的需求。
这是具有两个品种(alphas
和betas
)的简化模型:
breed [ alphas alpha ]
breed [ betas beta ]
globals [
experiment-id ; this could be a chooser in your interface
breed-to-use
num-steps-after-setup
]
to setup
clear-all
ifelse experiment-id = 0 [
set breed-to-use alphas
set num-steps-after-setup 25
] [
set breed-to-use betas
set num-steps-after-setup 50
]
create-turtles 10 [
set breed breed-to-use
]
reset-ticks
repeat num-steps-after-setup [ some-step-procedure-that-does-not-tick ]
end
您可以experiment-id
在BehaviorSpace实验定义中做出不同的选择:
["experiment-id" 0 1]
中的ifelse experiment-id = 0
语句setup
负责根据您正在运行的实验来设置其他参数。
顺便说一句,setup
要在Behavior的末尾运行一个过程以延迟BehaviorSpace记录步骤可能不是一个好主意,但是很难在不知道为什么要这么做的情况下提出替代方案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句