【问题标题】:How to run Rserve-Extension for Netlogo in local host using multiple cores simultaneously如何同时使用多个内核在本地主机中运行 Netlogo 的 Rserve-Extension
【发布时间】:2026-02-15 20:20:02
【问题描述】:

我有一台 Mac 10.8.5 (Mountain Lion)、2.6GHz Intel Core i7、8GB RAM、Netlogo 5.0.4、Rserve-Extension 0.1beta、R 版本 3.0.2 (2013-09-25) -- "飞盘航行”。

我想运行我的 NetLogo 模型,它通过 Rserve-Extension 将变量发送到 R,使用 BehavSpace,这样我就可以同时使用至少 4 个内核来运行它。

当我通过主界面(不使用 BehaviorSpace)运行 NetLogo 模型时,它可以完美运行。但是,当我尝试通过 BehaviorSpace 同时使用 4 个内核运行它时,它似乎在所有 4 个内核中运行,但只保存了 1 个模型运行的结果(在 R 中生成的 .csv 文件)。它还给出了一个初始错误“预期输入是一个代理,但得到了数字 0”——当我通过主界面运行它时它不会给出这个错误。

我只定义了 1 个端口:

rserve:init 6311 "localhost"

我的怀疑是,我猜,非常简单...我对此没有什么经验...

我需要在带有 Rserve 扩展的 NetLogo 模型中包含哪些代码才能使用 BehaviorSpace 在多个内核中同时运行它?每个核心需要 1 个连接吗?

我尝试了以下代码:

rserve:init 6311 "localhost"

rserve:init 6312 "localhost"

它连接第一个本地主机并在到达第二行时给出错误消息,说它已经连接(到第一行)。

谢谢 爱德华多

【问题讨论】:

  • 也许会引起 Rserve 作者的注意? (如果他们在这里回答,很好,如果他们私下回答你,如果你在这里发布他们的答案会很好,以防其他人有同样的问题。)

标签: r tcp-ip netlogo rserve behaviorspace


【解决方案1】:

Netlogo 的 Rserve-Extension 的作者 Jan Thiele 在一封私人电子邮件中为我提供了上述问题的答案。为了他人的利益,我在下面复制他的答案。

“我目前没有看到在不修改 R 中的变量名称的情况下使用具有多个内核的 Rserve-Extension 的解决方案。连接不是特定于内核的,而是全局可用的。相反,R-Extension 使用不同的环境并将来自不同核心的变量. Rserve-Extension 可能会发生类似的事情 - 但我需要仔细思考如何实现这一点 - 目前这很困难. 当然, 一个不好的解决方法可能是拆分 BehaviorSpace尝试几个独立的运行,并在不同的 NetLogo 实例中启动它们,每个实例都运行一个进程——当然,不好!”

爱德华多

【讨论】:

    最近更新 更多