Можно ли использовать RInside в проекте omnet++/Veins, чтобы использовать богатые возможности R

Я изучал R и прошел через этот пакет под названием RInside, который предоставляет классы C++ для вызова встроенного интерпретатора R. Я могу запустить несколько примеров, приведенных после настройки согласно этому посту и использования предоставленного make-файла в Omnet++ eclipse IDE. Как мы можем интегрировать это, скажем, с венами (в венах уже есть автоматически созданные make-файлы в верхнем каталоге и каталоге src)? Rinside нуждается в GCC toolchain, который, я думаю, по умолчанию в OMNeT++.

Из того, что я узнал до сих пор, это варианты:

  1. В руководстве пользователя Omnet ++ сказано, что мы можем использовать собственный make-файл для некоторого исходного каталога. Таким образом, сохраняя код RInside в одной исходной папке и отдельном make-файле и вызывая этот make-файл из make-файла верхнего уровня вен. Я попробовал оба этих подхода:
    1. скопировал некоторые исходные файлы из примеров RInside и make-файла и изменил свойства сборки в IDE, чтобы исключить эту папку из сборки
    2. также использовал опцию custom make file для этого каталога. Но пока не удалось. Может быть, я не делаю правильно.
  2. Реализуйте всю функциональность с помощью Rinside и сделайте ее библиотекой (статической / общей). Используйте эту библиотеку в венах.

Кто-нибудь до сих пор пытался использовать его с проектом на основе omnet++/veins? Кто-нибудь знает, стоит ли попробовать? Любые другие предложения приветствуются.

Я использую Ubuntu 16.04 LTS 64 бит.

1 ответ

Решение

Вы действительно хотите использовать R внутри OMNeT++ или вы хотите провести анализ результатов / данных?


Анализ результатов

Не могли бы вы предоставить немного информации о том, что вы пытаетесь сделать / почему вы пытаетесь использовать R внутри OMNeT++ вместо того, чтобы выполнять этап постобработки после завершения моделирования? Вообще говоря, я бы рекомендовал выполнять вашу постобработку отдельно от ваших симуляций, генерировать релевантные данные в результатах, используя библиотеки сбора статистики в OMNeT++, и обрабатывать их с помощью R. Вы можете найти некоторые примеры, которые используются с Plexe, VEINS симулятор для приложений CACC, в этом репозитории. Лично я предпочитаю использовать python для пост-обработки, но если вы уже знакомы с R, то я бы посоветовал взглянуть на это.


Интеграция с VEINS

Если вы действительно хотите это сделать, я бы порекомендовал второй подход в вашем вопросе, а именно: просто динамически ссылаться на библиотеки RInside в качестве системных библиотек и указывать их в качестве зависимости. Это в основном самый простой способ заставить вещи работать.

Однако, если по какой-то причине вы хотите явно связать библиотеку, вы должны знать, что процесс сборки VEINS основан на скрипте конфигурации, включенном в дистрибутив. Он отличается от обычных программ на C++ тем, что симуляции OMNeT++ должны создаваться с использованием OMNeT++- при условии opp_makemake инструмент: это именно то, что делает скрипт настройки VEINS. Если вы хотите включить дополнительные пути к библиотекам в процесс сборки, самый простой способ - создать make-файл, используя ./configure --include PATH/TO/RINSIDE/HEADERS, Обратитесь к исходному коду скрипта для более подробной информации.

Другие вопросы по тегам