A toolbox for learning optimal projections onto spectral submanifolds
This codebase accompanies the paper Taming High-Dimensional Dynamics: Learning Optimal Projections onto Spectral Submanifolds (arXiv:2504.03157)
It is recommended to work in a virtual environment.
First clone the repository:
git clone [email protected]:StanfordASL/Opt-SSM.git
cd Opt-SSM
Install the required package dependencies and the package itself in editable mode using pip:
pip install -r requirements.txt
pip install -e .
Note that SSMLearnPy is currently only compatible with NumPy 1.24.3, so if you have a different version of NumPy installed, you may need to downgrade it. Additionally, we make use of IPOPT, which has to be installed. In case you are using conda, this can be installed using:
conda install conda-forge::ipopt
Finally, we recommend using Gurobi for the solving the MPC, which has to be installed separately.
However, one can also use OSQP, which can be set in the run_mpc
function in the mpc file.
Example usage of the OptSSM class:
from utils.ssm import OptSSM
opt_ssm = OptSSM(aut_trajs_obs=aut_trajs_obs,
t_split=3.5,
SSMDim=5,
SSMOrder=2,
ROMOrder=2,
N_delay=3,
ts=ts)
Want to see a complete example? Check out one of the notebooks in the examples directory, e.g. the slow-fast example.
This project is licensed under the MIT License - see the LICENSE file for details.
- We thank the authors of the package SSMLearnPy for inspiration
- Slow-fast and simplified fluid benchmarks are adapted from Learning nonlinear projections for reduced-order modeling of dynamical systems using constrained autoencoders (Chaos, 2023)
@article{buurmeijer2025optssm,
author = {Buurmeijer, Hugo and Pabon, Luis and Alora, John Irvin and Roshan, Kaundinya and Haller, George and Pavone, Marco},
title = {Taming High-Dimensional Dynamics: Learning Optimal Projections onto Spectral Submanifolds},
year = {2025},
journal = {arXiv preprint arXiv:2504.03157},
note = {Submitted to IEEE Conference on Decision and Control (CDC), Rio de Janeiro, 2025},
}