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

问题描述 投票:0回答:1

我正在建立一个NetLogo模型,它需要与另一个模型(不是NetLogo)集成。因此,如果NetLogo模型被设置为连续运行,我想让它在每一个tick时,等待一个由链接模型创建的文件出现在父文件夹中。一旦这个文件出现,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的新文件出现在工作文件夹中,然后重复上述步骤。上面的代码没有达到我想要的效果。任何帮助将被感激。

谢谢,Rekha

while-loop netlogo file-exists pause
1个回答
1
投票

如果您使用 while 循环,在文件没有的时候举行运行,然后把动作放在循环外。比如说

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

你可以简单地用[]来代替[]。wait 但我怀疑那会相当低效,因为它会不断检查。而这个方法则是每隔1秒检查一次(当然你可以根据文件创建的频率来缩短或延长检查时间),一旦文件在那里,它就会转到其他代码上。

另一个选择取决于其他模型是用什么语言构建的。如果是类似java的R,你可以从该代码中控制NetLogo模型,并直接将模型耦合。

© www.soinside.com 2019 - 2024. All rights reserved.