Netlogo reset-ticks 错误信息

Netlogo reset-ticks error message

.nlogo file

我在使用行为 space

进行 运行 次迭代时收到此错误
The tick counter has not been started yet. Use RESET-TICKS.
error while observer running TICKS
called by procedure __EVALUATOR 

我不确定为什么会这样。我已将 reset-ticks 包含在 "set" 例程中。

此外,在行为 space 对话框向导中,我还将 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

您在 BehaviorSpace 实验的 "stop condition" 中使用了 ticks,所以我认为几乎可以肯定这就是 "error while observer running TICKS" 错误的来源,因为堆栈跟踪没有' t 引用过程名称。

这是我对这里发生的事情的最佳猜测:在某些情况下,您的 setup 过程失败,因此永远不会在 setup 结束时到达对 reset-ticks 的调用。然后 BehaviorSpace 尝试 运行 您的停止条件,导致您看到的错误。

这个猜测有一些问题:

  • 为什么 BehaviorSpace 只会向您显示最终的滴答错误,而不是导致 setup 失败的错误,我不知道。

  • 我不知道为什么您的 setup 程序会失败。

尽管如此,这已经是我在不进行更深入调查的情况下所能提供的最好的结果了。

不久前我遇到了同样的问题。我很确定问题可以追溯到 Netlogo 如何在线程之间共享全局 variables/states。我怀疑一个线程启动了 go 过程,而另一个线程还没有调用 reset-ticks

如果在 go 过程开始时尚未调用 reset-ticks,则临时解决此问题。

carefully [let t ticks][reset-ticks]

致那些通过搜索错误“The tick counter has not been started yet. Use RESET-TICKS”发现此问题的人。但实际上并未使用 BehaviorSpace - 该问题(以及因此接受的答案)不适用于您的情况。相反,您几乎肯定忘记了在尝试 运行 之前初始化模型,可能是在没有先点击设置按钮的情况下点击了开始按钮。

reset-ticks命令启动滴答计数器(使内部时钟可用)以便tick命令可以提前时钟。按照惯例,名为 setup 的过程具有初始化模型的所有命令,包括 reset-ticks、创建海龟等。类似地,名为 go[= 的过程22=] 包含实际 运行 模型的所有命令,如移动乌龟,包括 tick。同样按照惯例,这些过程 运行 分别按下名为 setupgo 的按钮。