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

时间:2018-02-15 04:45:39

标签: omnet++ veins rinside

我正在学习R并通过名为RInside的这个包来提供c ++类来调用嵌入式R解释器。在根据this blogpost配置并在Omnet ++ eclipse IDE中使用提供的makefile后,我能够运行一些示例。我们怎样才能将它与静脉相结合(静脉已经在顶级目录和src目录中有自动生成的makefile)? Rinside需要GCC工具链,我认为这是OMNeT ++中的默认工具。

从目前为止我所学到的知识,可以选择:

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

    我使用的是Ubuntu 16.04 LTS 64位。

1 个答案:

答案 0 :(得分:2)

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

结果分析

您是否可以提供一些有关您尝试做什么/为什么要在OMNeT ++中使用R而不是在模拟完成后进行后处理步骤的信息?一般来说,我建议您单独使用模拟进行后处理,使用OMNeT ++中的统计信息收集库在结果中生成相关数据,然后使用R进行处理。您可以找到一些与{{3}一起使用的示例},一个基于VEINS的CACC应用程序模拟器,位于Plexe。我个人更喜欢使用python进行后期处理,但是如果你已经熟悉了R,那么我建议你去看看。

与VEINS集成

如果你真的想这样做,我建议在你的问题中采用第二种方法,即简单地动态链接到RInside库作为系统库,并将它们指定为依赖。这基本上是让事情发挥作用的最简单方法。

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