This repository contains the code to reproduce the experiments presented in the paper:
Streaming Operator Inference for Model Reduction of Large-Scale Dynamical Systems
This repository contains the 1D viscous Burgers equation experiment and Kuramoto-Sivashinsky equation (KSE) example. The experiments demonstrate the performance of the Streaming-OpInf method for learning reduced-order models from streaming data. The 3D channel data is not available for public release and thus experiments on that dataset are not included here.
- You must have Julia installed on your system. You can download it from the official Julia website.
To run the experiments, first clone this repository
git clone https://github.com/smallpondtom/StreamingOpInf.gitPrepare the Julia environment
cd StreamingOpInf
julia
julia> ]
(@v1.11) pkg> instantiate Exit Julia by typing exit() or pressing Ctrl+D. The command julia will envoke the Julia REPL. The command ] will enter the package manager mode. The command instantiate will install all the required packages specified in the Project.toml file and generate a Manifest.toml file for your dependencies.
Now you are ready to run the experiments. Make sure you are in the root directory of the project, and then execute the appropriate script for your operating system:
- For Windows PowerShell:
.\run_experiments.ps1 -Experiment burgers
.\run_experiments.ps1 -Experiment kse
.\run_experiments.ps1 -Experiment both- For Windows Command Prompt:
run_experiments.bat burgers
run_experiments.bat kse
run_experiments.bat both- For Unix-based systems (Linux, macOS):
chmod +x ./run_experiments.sh burgers
chmod +x ./run_experiments.sh kse
chmod +x ./run_experiments.sh bothIt is going to take a while to run each experiment so maybe run them overnight.
The experiments rely on the following original Julia packages:
- LiftAndLearn.jl: The main Julia implementation of Operator Inference (and Lift & Learn) methods for learning reduced-order models from data.
- IncrementalSVD.jl: A Julia package for performing incremental singular value decomposition (SVD) on streaming data. Including the key algorithms: Baker's algorithm and SketchySVD.
- ChaosGizmo.jl: A Julia package for computing the Lyapunov exponents and the Kaplan-Yorke dimension. This package is used specifically used for the Kuramoto-Sivashinsky equation experiment to analyze the chaotic behavior of the learned reduced-order models.
For any questions, please contact Tomoki Koike at tkoike@gatech.edu.