如何重置带有扩展名的NetLogo模型?

时间:2015-09-29 17:47:23

标签: netlogo

我正在研究NetLogo模型,该模型在查找表中存储了大量信息,并嵌入了影响代理行为的补丁中。结果,我创建了一个模型"重置"从一个清除海龟的扩展,并重置计时器和滴答声。

我还希望扩展重置特定全局变量来跟踪模型结果,但不能重置所有常量全局变量(查找预计算信息表)。我还想重置所有界面图。​​

关于如何解决这个问题的任何想法?

我为没有显示的代码而道歉,因为我无法证明什么是无效的,因为我甚至不确定要尝试什么!

1 个答案:

答案 0 :(得分:1)

除了https://github.com/NetLogo/NetLogo/wiki/Engine-architecture的一般方式外,没有真正记录NetLogo引擎的内部结构,所以如果您的扩展程序想要直接操作引擎内容,您通常需要查阅NetLogo源代码以了解具体方法它完成了。

您需要clear-globals之类的内容,因此请查看https://github.com/NetLogo/NetLogo/blob/5.x/src/main/org/nlogo/prim/etc/_clearglobals.scalahttps://github.com/NetLogo/NetLogo/blob/37cc1a0aa371c11e89f5b39b5143ed5d951e6081/src/main/org/nlogo/agent/World.java#L849-L866

您需要clear-all-plots之类的内容,因此请查看https://github.com/NetLogo/NetLogo/blob/37cc1a0aa371c11e89f5b39b5143ed5d951e6081/src/main/org/nlogo/prim/plot/primitives.scala#L45-L50https://github.com/NetLogo/NetLogo/blob/37cc1a0aa371c11e89f5b39b5143ed5d951e6081/src/main/org/nlogo/plot/PlotManager.scala#L54-L57

等等。

编辑:

要访问PlotManager,请注意plot / primitives.scala具有:

workspace.plotManager.asInstanceOf[PlotManager]

在扩展的Java代码中,从工作区plotManager()获取PlotManager,除了该方法的返回类型是Object(是的,我知道,它是蹩脚和可怕的),所以你需要插入一个类型转换为org.nlogo.plot.PlotManager,你很高兴。 PlotManager具有获取特定图的方法。