【问题标题】:Loading a Netlogo model with extension from RNetLogo从 RNetLogo 加载带有扩展名的 Netlogo 模型
【发布时间】:2017-07-12 11:09:35
【问题描述】:

我正在尝试使用 RNetLogo 在无头模式下加载 Netlogo 模型。该模型使用 extensions [rnd] 添加到模型中的 rnd 扩展名。如果我尝试使用 NLLoad(model.path) 加载模型,我会收到此错误:

NLLoadModel(model.path)
[1] "Java-Object{Can't find extension: rnd at position 79 in }"
Error in NLLoadModel(model.path) :`

很遗憾,我在documentation of NLLoad 中找不到任何内容。

我尝试将工作目录设置为 Netlogo 目录:setwd("/Applications/Netlogo 6.0.1")。这会将错误更改为

[1] "Java-Object{There was a problem while reading extension rnd at position 79 in }"
Fehler in NLLoadModel(model.path) : 

rnd 扩展在扩展文件夹中是安全可靠的:/Applications/Netlogo 6.0.1/extensions/rnd.jar

【问题讨论】:

  • 您是否能够加载具有不同扩展名的模型,或者问题rnd 特定?
  • 我通过将扩展文件夹复制到与我正在运行的无头模型相同的文件夹中修复了类似的问题 - 试试看?
  • 我用数组扩展对其进行了测试。该问题并非特定于 rnd 扩展,无法通过将扩展文件夹或其 jar 文件复制到与模型相同的位置来解决。
  • @nehalem 澄清一下——你复制了扩展的文件夹还是整个“扩展”文件夹?后者对我有用 - 只是在特定扩展的文件夹中复制没有。
  • @LukeC,我最初并没有复制整个扩展文件夹,但我只是尝试过,它也没有工作。是否可以在 Netlogo 中指定扩展的绝对路径?

标签: r netlogo


【解决方案1】:

回复您的评论 - 这太糟糕了,但值得一试。也许这种方法只适用于从命令行无头运行。我还发现您似乎使用的是 Mac-我正在运行 Windows,因此我的解决方案很可能对您不起作用。你读过RNetlogo documentation中的“MAC用户须知”吗?

无论如何,我有一个在 Windows 上运行的简单版本,所以我想我会向您展示我的设置,看看是否有帮助。这是包含我的模型的文件夹,以及包含 netlogo-6.0.1.jarapp 文件夹和包含所有扩展名及其文件夹的 extensions 文件夹(从 app 文件夹中完整复制):

test_rnd.nlogo如下:

extensions [ rnd ]

globals [ pcolor-list ]

to setup
  ca
  reset-ticks
  ask patches [
    set pcolor random 10 + 50
  ]
end

to go
  check
  tick
end


to check
  set pcolor-list []
  repeat 10 [
    ask rnd:weighted-one-of patches [ pcolor ] [
      set pcolor-list lput pcolor pcolor-list
    ]
  ]
end

然后,在 R 中:

library(RNetLogo)

nl.path <- "C:/test_rnetlogo/app"

model.path <- "C:/test_rnetlogo/test_rnd.nlogo"

NLStart(nl.path, gui = FALSE, nl.jarname = "netlogo-6.0.1.jar")

NLLoadModel(model.path)

NLCommand("setup")
NLCommand("Go")
test <- NLReport("pcolor-list")

> print(test)
 [1] 53 53 50 57 50 53 50 58 58 51

所以在这个例子中,至少在 Windows 中,将扩展文件夹、应用程序文件夹和模型文件本身都放在同一个位置似乎是可行的。抱歉,我不知道 Mac 的修复方法,希望其他人有合适的解决方案。

【讨论】:

  • 首先感谢您加倍努力并提出如此详细的建议。不幸的是,它也不起作用。我确实在使用 macOS,所以我进行了必要的调整,但得到了相同的错误消息。我还没有尝试在 GUI 模式下运行 Netlogo,因为这看起来相当复杂。
【解决方案2】:

我通过将 CSV 扩展文件夹的内容直接复制到 app 文件夹中来完成这项工作(使用 CSV 扩展)。

我在 GNU/Linux 下工作。这种方法对 OSx 用户也可能更有效。我猜这没有按预期工作,因为没有为我们设置类路径的 RNetLogo 的“安装”。我们明确告诉 R 在哪里可以找到 netlogo-x.x.x.jar,但不是任何扩展。

【讨论】:

    【解决方案3】:

    在 Mac 上,可以通过以下方式解决此问题:

    对于每个正在使用的 NetLogo 扩展,将该文件夹复制并粘贴到包含您尝试运行的 .nlogo 模型的目录中。

    例如,对于rnd 扩展,将文件夹/Applications/NetLogo 6.0.4/extensions/nw 复制到model.path 中设置的封闭文件夹。 NLLoadModel(model.path) 现在应该在没有此错误的情况下执行。

    此解决方案基于Extensions Guide of the NetLogo 6.0.4 User Manual(已添加重点):

    NetLogo 会在几个地方寻找扩展:

    1. 在当前模型的文件夹中。
    2. 安装 NetLogo 的扩展文件夹。对于典型的 NetLogo 安装:
      • 在 Mac OS X 上:/Applications/NetLogo 6.0.4/extensions
      • 在带有 64 位 NetLogo 的 64 位 Windows 或带有 32 位 NetLogo 的 32 位 Windows 上:C:\Program Files\NetLogo 6.0.4\app\extensions
      • 在带有 32 位 NetLogo 的 64 位 Windows 上:C:\Program Files (x86)\NetLogo 6.0.4\app\extensions
      • 在 Linux 上:从安装 .tgz 中提取的 NetLogo 目录的 app/extensions 子目录

    我不清楚为什么对/Applications/NetLogo 6.0.4/extensions 的检查不起作用,但至少有一个解决方案!

    我在 NetLogo 中使用 nw 扩展时遇到了同样的问题,收到几乎相同的错误:

    > NLLoadModel(model.path)
    [1] "Java-Object{Can't find extension: nw at position 13 in }"
    Error in NLLoadModel(model.path) :
    

    所以这个问题似乎适用于所有扩展。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多