我在使用行为空间运行迭代时遇到此错误
The tick counter has not been started yet. Use RESET-TICKS.
error while observer running TICKS
called by procedure __EVALUATOR
我不确定为什么会这样。我在" set"中包含了reset-ticks。例程。
此外,在行为空间对话框向导中,我还包括reset-ticks作为要执行的最终命令。但是我收到了这个错误。
以下是我的设置并转到代码:
to setup
clear-all
setup-citizens
setup-parties
update-support
reset-ticks
end
to go
ask parties [ adapt set my-old-size my-size ]
update-support
election
plot-voter-turnout
plot-volatility
if (Turnout-100%? = false) [plot-citizen-comparison]
tick
end
答案 0 :(得分:2)
您在BehaviorSpace实验"停止条件"中使用ticks
,所以我认为几乎可以肯定"观察者运行TICKS"错误必须来自,因为堆栈跟踪没有引用过程名称。
以下是我对此处发生的事情的最佳猜测:在某些情况下,您的setup
程序失败,因此在结束时从未接听到reset-ticks
的电话。 setup
。然后,BehaviorSpace会尝试运行您的停止条件,从而导致您看到的错误。
这个猜测有一些问题:
为什么BehaviorSpace只会向您显示最终的刻度错误,而不是导致setup
失败的错误,我不知道。
我不知道为什么你的setup
程序会失败。
尽管如此,如果不进行更深入的调查,我能为您提供最好的服务。
答案 1 :(得分:0)
不久前我也遇到了同样的问题。我很确定问题可以追溯到Netlogo如何在线程之间共享全局变量/状态。我怀疑一个线程启动go
过程,而另一个线程尚未调用reset-ticks
。
如果在reset-ticks
程序开始时尚未调用go
,则可以暂时解决此问题。
carefully [let t ticks][reset-ticks]
答案 2 :(得分:0)
对于那些通过搜索错误“滴答计数器尚未启动。请使用RESET-TICKS”找到此问题的人。但实际上并没有使用BehaviorSpace-问题(以及因此得到的答案)不适用于您的情况。取而代之的是,您几乎肯定忘记了在尝试运行模型之前对其进行初始化的方法,可能是通过单击“执行”按钮而没有首先单击“设置”按钮。
reset-ticks
命令启动滴答计数器(使内部时钟可用),以便tick
命令可以提前时钟。按照惯例,名为 setup 的过程具有初始化模型的所有命令,包括reset-ticks
,创建乌龟等。类似地,名为 go 的过程包含所有实际运行模型的命令,例如四处移动海龟,包括tick
。同样,按照惯例,这些过程可以分别按下分别名为 setup 和 go 的按钮来运行。