Enhancing Dynamic Mode Decomposition using Autoencoder Networks
Abstract
Prediction, estimation, and control of dynamical systems remains challenging due to nonlinearity. The Koopman operator is an infinite-dimensional linear operator that evolves the observables of a dynamical system which we approximate by the dynamic mode decomposition (DMD) algorithm. Using DMD to predict the evolution of a nonlinear dynamical system over extended time horizons requires choosing the right observable function defined on the state space. A number of DMD modifications have been developed to choose the right observable function, such as Extended DMD. Here, we propose a simple machine learning based approach to find these coordinate transformations. This is done via a deep autoencoder network. This simple DMD autoencoder is tested and verified on nonlinear dynamical system time series datasets, including the pendulum and fluid flow past a cylinder.
Keywords - Dynamic mode decomposition, Deep learning, Dynamical systems, Koopman analysis, Observable functions.
Dependencies
References
License
Important Python subroutines
This is a collection of Python subroutines and examples that illustrate how to train a Dynamic Mode Decomposition autoencoder.
The most important Python subroutines are:
-
dmd_machine:
1 2 3
dmd_machine/autoencoder_network.py dmd_machine/dmd_ae_machine.py dmd_machine/loss_function.py
-
data:
1
data/Data.py
-
driver/runfile:
1 2 3
train_discrete_dataset_machine.py train_pendulum_machine.py train_fluid_flow_machine.py
About the Authors
Mathematics Department, San Diego State University
Research project under the supervision of Professor Christopher Curtis (ccurtis@sdsu.edu).
- Opal Issan- Applied Mathematics undergraduate student (opal.issan@gmail.com)