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

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

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

  1. Omnet++ user manual says we can use custom makefile for some source directory. So keeping RInside code in one source folder and a separate makefile and calling this makefile from veins top level makefile. I tried both of these approaches:
    1. copying some source files from RInside examples and makefile and changed the Build properties in IDE to exclude this folder from build
    2. также использовал опцию custom make file для этого каталога. Но пока безуспешно. Может быть, я делаю не правильно.
  2. Реализуйте все функции с помощью Rinside и сделайте его библиотекой (статической / общей). Используйте эту библиотеку в жилах.

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

Я использую 64-разрядную версию Ubuntu 16.04 LTS.


person rajeswar    schedule 15.02.2018    source источник


Ответы (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. Обратитесь к исходному коду скрипта для получения более подробной информации.

person Rens van der Heijden    schedule 15.02.2018
comment
Привет, Ренс, спасибо за ответ. Моя цель - интегрировать RInside с Veins. Для анализа результатов я использую пакет omnetpp R. Моя работа включает в себя использование алгоритма кластеризации машинного обучения в моделировании (не на данных результатов, поэтому в основном это происходит во время моделирования). И в python, и в R уже есть все необходимые библиотеки, и попытка их повторной реализации трудна и требует времени. Поэтому я изучал другие доступные варианты. Затем я наткнулся на этот интересный пакет RInside. Так что я экспериментирую с этим. Я не знал о настройке. Я постараюсь вернуться в ближайшее время. - person rajeswar; 15.02.2018
comment
Итак, вы хотите использовать RInside для обучения? В таком случае, вероятно, лучше всего будет второй вариант. Не забывайте, что время обработки не моделируется VEINS автоматически - если вы выполняете дорогостоящие вычисления в транспортных средствах, вычисление будет считаться мгновенным во времени моделирования. Это не проблема для большинства приложений (поскольку добавить более качественное оборудование не так уж сложно), но имейте это в виду, если вы хотите использовать машинное обучение, критичное ко времени. - person Rens van der Heijden; 15.02.2018
comment
Ага. Я просто экспериментирую, если это возможно. Я обязательно учту предложение о времени обработки. Как только я пойму, что мне нужно сделать, я могу попробовать реализацию на C ++ для более быстрой обработки. Спасибо за помощь - person rajeswar; 16.02.2018