我有一个没有全局值的模拟。相反,实验之间改变的两件事是使用的品种,以及设置中的滴答数(行为空间开始记录结果前的转数)
目前我正在复制每个行为空间并进行细微更改,是否有更好的方法来执行此操作以便我可以立即对所有行为空间进行编程?
答案 0 :(得分:2)
有很多不同的方法可以做到这一点,但由于你没有给我们提供很多关于你要做什么的信息,我将提出一些非常一般的建议。您应该能够根据自己的需要进行调整。
这是一个包含两个品种(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
您可以在BehaviorSpace实验定义中改变experiment-id
:
["experiment-id" 0 1]
ifelse experiment-id = 0
中的setup
语句会根据您正在运行的实验来设置其他参数。
顺便说一句,在setup
结束时运行一个程序以延迟BehaviorSpace记录步骤可能不是一个好主意,但很难在不知道你为什么要这样做的情况下提出替代方案