2

.nlogo 文件在此处输入图像描述

使用行为空间运行迭代时出现此错误

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
4

3 回答 3

2

ticks在 BehaviorSpace 实验的“停止条件”中使用,所以我认为几乎可以肯定“观察者运行 TICKS 时发生错误”错误必须来自哪里,因为堆栈跟踪没有引用过程名称。

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

这个猜测有一些问题:

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

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

尽管如此,这是我可以为您提供的最好的,无需进行更深入的调查。

于 2016-03-17T18:37:30.493 回答
0

对于那些通过搜索错误“滴答计数器尚未启动。使用 RESET-TICKS”找到此问题的人。但实际上并未使用 BehaviorSpace - 该问题(以及因此接受的答案)不适用于您的情况。相反,您几乎可以肯定在尝试运行模型之前忘记初始化模型,可能是在没有先点击设置按钮的情况下点击 go 按钮。

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

于 2020-09-09T09:05:52.433 回答
0

不久前我也面临同样的问题。我很确定问题可以追溯到 Netlogo 如何在线程之间共享全局变量/状态。我怀疑一个线程启动了该go过程,而另一个线程尚未调用该过程reset-ticks

对此的临时解决方法是,如果在您的程序reset-ticks开始时尚未调用它,则调用它。go

carefully [let t ticks][reset-ticks]

于 2018-03-11T02:43:38.767 回答