Можно ли использовать RInside в проекте omnet++/Veins, чтобы использовать богатые возможности R
Я изучал R и прошел через этот пакет под названием RInside, который предоставляет классы C++ для вызова встроенного интерпретатора R. Я могу запустить несколько примеров, приведенных после настройки согласно этому посту и использования предоставленного make-файла в Omnet++ eclipse IDE. Как мы можем интегрировать это, скажем, с венами (в венах уже есть автоматически созданные make-файлы в верхнем каталоге и каталоге src)? Rinside нуждается в GCC toolchain, который, я думаю, по умолчанию в OMNeT++.
Из того, что я узнал до сих пор, это варианты:
- В руководстве пользователя Omnet ++ сказано, что мы можем использовать собственный make-файл для некоторого исходного каталога. Таким образом, сохраняя код RInside в одной исходной папке и отдельном make-файле и вызывая этот make-файл из make-файла верхнего уровня вен. Я попробовал оба этих подхода:
- скопировал некоторые исходные файлы из примеров RInside и make-файла и изменил свойства сборки в IDE, чтобы исключить эту папку из сборки
- также использовал опцию custom make file для этого каталога. Но пока не удалось. Может быть, я не делаю правильно.
- Реализуйте всю функциональность с помощью 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
, Обратитесь к исходному коду скрипта для более подробной информации.