FMIFlux.jl is a free-to-use software library for the Julia programming language, which offers the ability to set up NeuralFMUs just like NeuralODEs: You can place FMUs (fmi-standard.org) simply inside any feed-forward ANN topology and still keep the resulting hybrid model trainable with a standard (or custom) FluxML training process.
1. Open a Julia-REPL, switch to package mode using ]
, activate your preferred environment.
2. Install FMIFlux.jl:
(@v1.x) pkg> add FMIFlux
3. If you want to check that everything works correctly, you can run the tests bundled with FMIFlux.jl:
(@v1.x) pkg> test FMIFlux
4. Have a look inside the examples folder in the examples branch or the examples section of the documentation. All examples are available as Julia-Script (.jl), Jupyter-Notebook (.ipynb) and Markdown (.md).
- building and training ME-NeuralFMUs (event-handling is supported) with the default Flux-Front-End
- building and training CS-NeuralFMUs with the default Flux-Front-End
- different AD-frameworks: ForwardDiff.jl, ReverseDiff.jl (default setting) and Zygote.jl
- ...
- performance optimizations
- improved documentation
- more examples
- ...
FMIFlux.jl is tested (and testing) under Julia versions 1.6 (LTS) and 1.8 (latest) on Windows (latest) and Ubuntu (latest). MacOS should work, but untested. However, please use Julia versions >= 1.7 if possible, because FMIFlux.jl runs a lot faster with these newer Julia versions. FMIFlux.jl currently only works with FMI2-FMUs. All shipped examples are tested under Julia version 1.8 (latest) on Windows (latest).
To keep dependencies nice and clean, the original package FMI.jl had been split into new packages:
- FMI.jl: High level loading, manipulating, saving or building entire FMUs from scratch
- FMIImport.jl: Importing FMUs into Julia
- FMIExport.jl: Exporting stand-alone FMUs from Julia Code
- FMICore.jl: C-code wrapper for the FMI-standard
- FMIBuild.jl: Compiler/Compilation dependencies for FMIExport.jl
- FMIFlux.jl: Machine Learning with FMUs (differentiation over FMUs)
- FMIZoo.jl: A collection of testing and example FMUs
Tobias Thummerer, Johannes Stoljar and Lars Mikelsons. 2022. NeuralFMU: presenting a workflow for integrating hybrid NeuralODEs into real-world applications. Electronics 11, 19, 3202. DOI: 10.3390/electronics11193202
Tobias Thummerer, Lars Mikelsons and Josef Kircher. 2021. NeuralFMU: towards structural integration of FMUs into neural networks. Martin Sjölund, Lena Buffoni, Adrian Pop and Lennart Ochel (Ed.). Proceedings of 14th Modelica Conference 2021, Linköping, Sweden, September 20-24, 2021. Linköping University Electronic Press, Linköping (Linköping Electronic Conference Proceedings ; 181), 297-306. DOI: 10.3384/ecp21181297
Tobias Thummerer, Johannes Tintenherr, Lars Mikelsons 2021. Hybrid modeling of the human cardiovascular system using NeuralFMUs Journal of Physics: Conference Series 2090, 1, 012155. DOI: 10.1088/1742-6596/2090/1/012155