omnetpp-ml
omnetpp-ml copied to clipboard
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.
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:
- Documentation
- Examples
- Docker Images
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:
- Documentation
- Examples
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:
- Documentation
- Examples
Authors
- Daniel Stolpmann, Hamburg University of Technology, Institute of Communication Networks, Germany - [email protected]