/omnetpp-ml

Materials on how to use machine learning frameworks in OMNeT++

Machine Learning in OMNeT++

This repository contains materials on how to use Machine Learning (ML) frameworks in OMNeT++.

Methods

There are different methods to perform ML in OMNeT++. The figure below gives an overview of the ones that are described in this repository.

Overview of Machine Learning in OMNeT++

TensorFlow C++ API

TensorFlow can be used directly in OMNeT++ by using its C++ API. An untrained or trained neural network can be created in Python, exported and used in an OMNeT++ simulation. As TensorFlow needs to be built from source to get access to the C++ API, we provide Docker images with TensorFlow and OMNeT++ preinstalled. While this method offers high performance and control, it also requires sound knowledge in ML and TensorFlow.

More information can be found here:

frugally-deep

frugally-deep is a header-only library for performing inference on Keras models in C++. Compared to the TensorFlow C++ API, it is much easier to compile and integrate into an OMNeT++ simulation, but is limited in functionality by not supporting GPU computing or training.

More information can be found here:

OpenAI Gym

OMNeT++ can be wrapped in an OpenAI Gym to use an OMNeT++ simulation as an environment for Reinforcement Learning (RL) in Python. This is achieved by using Veins-Gym, which unlike its name suggests works with any OMNeT++ simulation. The use of the standardized OpenAI Gym environment interface makes this approach usable with many popular RL frameworks such as Stable Baselines or RLlib. Therefore, this method is recommended for anyone who wants to implement RL problems in OMNeT++.

More information can be found here:

Authors