是否可以在 omnet++/Veins 项目中使用 RInside 以受益于丰富的 R 功能

Is it possible to use RInside in omnet++/Veins project to benefit from rich R features

我正在学习 R 并学习了这个名为 RInside which provides c++ classes to call an embedded R interpreter. I am able to run some examples given after configuring as per this blogpost 的软件包,并在 Omnet++ eclipse IDE 中使用了提供的 makefile。我们如何将它与 say veins 集成(veins 已经在顶级目录和 src 目录中自动生成了 makefile)? Rinside 需要 GCC 工具链,我认为这是 OMNeT++ 中的默认工具链。

根据我目前所学,这些是选项:

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

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

我正在使用 Ubuntu 16.04 LTS 64 位。

您真的想在 OMNeT++ 中使用 R,还是想做 result/data 分析?


结果分析

您能否提供一些关于您正在尝试的信息 do/why 您正在尝试在 OMNeT++ 中使用 R 而不是在模拟完成后执行 post 处理步骤?一般来说,我建议将 post 处理与模拟分开进行,使用 OMNeT++ 中的统计收集库在结果中生成相关数据,并使用 R 处理这些数据。您可以找到一些与Plexe, a VEINS-based simulator for CACC applications, in this repository。我个人更喜欢使用 python 进行 post 处理,但如果您已经熟悉 R,那么我建议您看一下。


与 VEINS 集成

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

然而,如果出于某种原因你想 link 明确反对库,你应该知道 VEINS 的构建过程依赖于发行版中包含的 configure script。它与普通 C++ 程序不同的工作方式是 OMNeT++ 模拟应该使用 OMNeT++ 提供的 opp_makemake 工具构建:这正是 VEINS 的配置脚本所做的。如果要在构建过程中包含其他库路径,最简单的方法是使用 ./configure --include PATH/TO/RINSIDE/HEADERS 创建一个 makefile。详情请参考脚本源码