An intuitive modeling interface for infinite-dimensional optimization problems.
Author pulsipher
41 Stars
Updated Last
2 Years Ago
Started In
August 2019


A JuMP extension for expressing and solving infinite-dimensional optimization problems. Such areas include stochastic programming, dynamic programming, space-time optimization, and more. InfiniteOpt serves as an easy to use modeling interface for these advanced problem types that can be used by those with little to no background in these areas. It also it contains a wealth of capabilities making it a powerful and convenient tool for advanced users.

Documentation Build Status Citation
Build Status Build Status2 DOI
Build Status

Its capabilities include:

  • JuMP-like symbolic macro interface
  • Infinite domain abstractions for parameterization of variables/constraints
  • Finite parameters support and use (similar to ParameterJuMP)
  • Direct support of infinite, point, and hold variables
  • Straightforward measure operator definition (e.g., integrals, risk measures)
  • Infinite/finite constraint definition
  • Event constraint definition (e.g., chance constraints)
  • Compact ordinary/partial differential operator expression
  • Efficient automated model transcription/reformulation and solution
  • Compatible with all JuMP-supported solvers
  • Readily extendable to accommodate user defined abstractions and solution techniques.

Currently, the following infinite and finite problem types are accepted:

  • Variables
    • Continuous and semi-continuous
    • Binary
    • Integer and semi-integer
  • Derivatives
    • Ordinary derivative operators (of any order)
    • Partial derivative operators (of any order)
  • Measures
    • Univariate and multivariate integrals
    • Univariate and multivariate expectations
    • Arbitrary measure operators (via general measure API)
  • Objectives
    • Linear
    • Quadratic (convex and non-convex)
    • Higher-order powers (via place holder variables)
  • Constraints
    • Linear
    • Quadratic (convex and non-convex)
    • Higher-order powers (via place holder variables)

Comments, suggestions and improvements are welcome and appreciated.


InfiniteOpt is licensed under the MIT "Expat" license.


InfiniteOpt.jl is a registered package and can be installed by entering the following in the package manager.

(v1.6) pkg> add InfiniteOpt

Modeling Infinite-Dimensional Problems with InfiniteOpt.jl

See our YouTube overview of infinite-dimensional programming and InfiniteOpt.jl's capabilities: youtube


Please visit our documentation pages to learn more. These pages are quite extensive and feature overviews, guides, manuals, tutorials, examples, and more!



If you use InfiniteOpt.jl in your research, we would greatly appreciate your citing it.

  author       = {J. Pulsipher and W. Zhang and V. Zavala},
  title        = {InfiniteOpt.jl -- A Julia package for modeling infinite-dimensional optimization problems},
  year         = 2020,
  doi          = {10.5281/zenodo.4291106},
  url          = {}

Project Status

The package is tested against Julia 1.0 and 1.6 on Linux and Windows.


InfiniteOpt is being actively developed and suggestions or other forms of contribution are encouraged. There are many ways to contribute to this package. For more information please visit CONTRIBUTING.

Used By Packages

No packages found.