多个行为空间

Multiple behavior spaces

我有一个没有全局值的模拟。相反,实验之间发生变化的两件事是所使用的品种,以及设置中的刻度数(行为 space 开始记录结果前的转数)

目前我正在复制每个行为 space 并进行微小的更改,是否有更好的方法来执行此操作以便我可以对所有行为 space 进行编程一次运行?

有许多不同的方法可以做到这一点,但由于您没有向我们提供很多关于您正在尝试做什么的信息,我将提出一些非常笼统的建议。您应该能够根据自己的需要进行调整。

这是一个包含两个品种(alphasbetas)的简单模型:

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]

setup 中的 ifelse experiment-id = 0 语句负责根据您正在 运行 进行的实验设置其他参数。


顺便说一句,在 setup 的末尾设置一个程序 运行 来延迟 BehaviorSpace 的步骤记录可能不是一个好主意,但很难在不知情的情况下提出替代方案你为什么要这样做。