Skip to content
/ soupy Public

Stochastic Optimization under Uncertainty in Python.

License

Notifications You must be signed in to change notification settings

hippylib/soupy

Repository files navigation

Build Status Documentation Status DOI DOI

Stochastic Optimization under high-dimensional Uncertainty in Python

Stochastic Optimization under high-dimensional Uncertainty in Python—SOUPy, implements scalable algorithms for the optimization of large-scale complex systems governed by partial differential equations (PDEs) under high-dimensional uncertainty. The library features various risk measures (such as mean, variance, and superquantile/condition-value-at-risk), probability/chance constraints, and optimization/state constraints. SOUPy enables efficient PDE-constrained optimization under uncertainty through parallel computation of the risk measures and their derivatives (gradients and Hessians). The library also provides built-in parallel implementations of optimization algorithms (e.g. BFGS, Inexact Newton CG), as well as an interface to the scipy.optimize module in SciPy. Besides the benchmark/tutorial examples in the examples folder, SOUPy has been used to solve large-scale and high-dimensional stochastic optimization problems including optimal control of turbulence flow, optimal design of acoustic metamaterials and self-assembly nanomaterials, and optimal management of groundwater extraction, etc.

SOUPy is built on the open-source hIPPYlib library, which provides adjoint-based methods for deterministic and Bayesian inverse problems governed by PDEs, and makes use of FEniCS for the high-level formulation, discretization, and solution of PDEs.

SOUPy is in active development to incorporate advanced approximation algorithms and capabilities, including:

  • Taylor expansion-based approximations for risk measure evaluation
  • High-dimensional quadrature methods such as sparse grids and quasi Monte Carlo
  • Decomposition of high-dimensional uncertain parameter spaces by mixture models
  • Multi-fidelity methods and control variates
  • Interfaces with Bayesian inverse problems

See the SOUPy documentation and our JOSS paper for more information.

Please cite SOUPy as

  @article{Luo2024,
  doi = {10.21105/joss.06101},
  url = {https://doi.org/10.21105/joss.06101},
  year = {2024},
  publisher = {The Open Journal},
  volume = {9},
  number = {99},
  pages = {6101},
  author = {Dingcheng Luo and Peng Chen and Thomas O'Leary-Roseberry and Umberto Villa and Omar Ghattas},
  title = {{SOUPy}: Stochastic PDE-constrained optimization under high-dimensional uncertainty in Python},
  journal = {Journal of Open Source Software}
}

Acknowledgements

This project is partially supported by NSF grants #2012453 and #2245674.