【问题标题】:NetLogo : How to make the model pause as it waits for a fileNetLogo:如何让模型在等待文件时暂停
【发布时间】:2020-08-06 00:42:57
【问题描述】:

我正在构建一个需要与另一个模型(不是 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-loop netlogo file-exists pause


    【解决方案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 模型并直接耦合模型。

    【讨论】:

    • 哦,效果很好!这正是我想要的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-30
    相关资源
    最近更新 更多