我正在构建一个需要与另一个模型(不是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-grow完成后,程序删除ascii文件biosim。理想情况下,我希望它等待一个名为biosim的新文件出现在工作文件夹中,然后重复这些步骤。上面的代码没有得到我想要的东西。任何帮助都将不胜感激。
谢谢,Rekha
发布于 2020-04-23 05:29:03
如果在文件不在的情况下使用while循环保持运行,然后将操作放在循环之外,会发生什么情况?例如:
to go
while [not file-exists? "biosim.asc"] [wait 1]
grow-grass
grow-herd
delete-biosim
tick
end您可能只需使用[]而不是wait,但我怀疑这将是相当低效的,因为它将不断检查。相反,它每隔1秒检查一次(当然,您可以根据文件创建的频率将检查设置得更短或更长),一旦文件存在,它就会转移到其他代码。
另一种选择取决于另一种模型内置的语言。如果它类似于java中的R,那么您可以从该代码控制NetLogo模型,并直接耦合模型。
https://stackoverflow.com/questions/61374543
复制相似问题