3

我正在学习 R,并通过这个名为RInside的包来提供 c++ 类来调用嵌入式 R 解释器。我可以运行一些在按照这篇博文进行配置并在 Omnet++ eclipse IDE 中使用提供的 makefile 之后给出的示例。我们如何将它与 say Veins 集成(veins 在顶层目录和 src 目录中已经有自动生成的 makefile)?Rinside 需要 GCC 工具链,我认为这在 OMNeT++ 中是默认的。

根据我到目前为止所学到的,这些是选项:

  1. Omnet++ 用户手册说我们可以为某些源目录使用自定义生成文件。因此,将 RInside 代码保存在一个源文件夹和一个单独的 makefile 中,并从 Venes 顶级 makefile 调用此 makefile。我尝试了这两种方法:
    1. 从 RInside 示例和 makefile 复制一些源文件并更改 IDE 中的构建属性以从构建中排除此文件夹
    2. 还为此目录使用了选项自定义生成文件。但到目前为止还没有成功。可能是我做得不对。
  2. 使用 Rinside 实现所有功能并使其成为库(静态/共享)。在静脉中使用这个库。

到目前为止,有没有人尝试将它与基于 omnet++/veins 的项目一起使用?有谁知道是否值得尝试?欢迎任何其他建议。

我正在使用 Ubuntu 16.04 LTS 64 位。

4

1 回答 1

2

您真的想在 OMNeT++ 中使用 R,还是希望进行结果/数据分析?


结果分析

您能否提供一些有关您尝试做什么/为什么尝试在 OMNeT++ 中使用 R 而不是在模拟完成后执行后处理步骤的信息?一般来说,我建议您将后处理与模拟分开进行,使用 OMNeT++ 中的统计信息收集库在结果中生成相关数据,并使用 R 处理这些数据。您可以找到一些与Plexe一起使用的示例,一个 VEINS基于 CACC 应用程序的模拟器,在此存储库中。我个人更喜欢使用 python 进行后处理,但如果您已经熟悉 R,那么我建议您看一下。


与 VEINS 集成

如果你真的想这样做,我会在你的问题中推荐第二种方法,即简单地将 RInside 库作为系统库动态链接并将它们指定为依赖项。这基本上是让事情正常工作的最简单方法。

但是,如果由于某种原因您想显式链接库,您应该知道 VEINS 的构建过程依赖于分发中包含的配置脚本。它与普通 C++ 程序的不同之处在于,应该使用 OMNeT++ 提供的opp_makemake工具构建 OMNeT++ 模拟:这正是 VEINS 的配置脚本所做的。如果您想在构建过程中包含其他库路径,最简单的方法是使用./configure --include PATH/TO/RINSIDE/HEADERS. 更多详情请参考脚本源代码

于 2018-02-15T09:14:21.347 回答