NetLogo:如何让模型在等待文件时暂停

NetLogo : How to make the model pause as it waits for a file

我正在构建一个需要与另一个模型(不是 NetLogo)集成的 NetLogo 模型。因此,如果 NetLogo 模型连续设置为 运行,我希望它在每次勾选时等待链接模型创建的文件出现在父文件夹中。一旦该文件出现,NetLogo 将其读入并继续执行 Go 中指定的所有步骤。所以基本上,我希望 NetLogo 在等待文件时暂停,然后一旦文件出现,就恢复。我尝试使用 'while' 函数,但没有成功。

比如我这样设置的时候

to go

while [file-exists? "biosim.asc"][

grow-grass
grow-herd
delete-biosim
tick]

这里NetLogo读入biosim文件,grow-grass、grow-herd程序完成后,程序删除ascii文件biosim。理想情况下,我希望它等待名为 biosim 的新文件出现在工作文件夹中,然后重复这些步骤。上面的代码没有得到我想要的。任何帮助将不胜感激。

谢谢, 雷卡

如果您在文件不存在时使用 while 循环来保存 运行,然后将操作放在循环之外,会发生什么情况。例如:

to go
  while [not file-exists? "biosim.asc"] [wait 1]
  grow-grass
  grow-herd
  delete-biosim
  tick
end

您可以简单地使用 [] 而不是 wait,但我怀疑这样做效率很低,因为它会不断检查。这改为每 1 秒检查一次(当然,您可以缩短或延长检查时间,具体取决于文件的创建频率),一旦文件存在,它就会转到其他代码。

另一个选项取决于其他模型内置的语言。如果它类似于 java 的 R,您可以从该代码控制 NetLogo 模型并直接耦合模型。