Skip to content

An intuitive modeling interface for infinite-dimensional optimization problems.

License

Notifications You must be signed in to change notification settings

dlcole3/InfiniteOpt.jl

 
 

Repository files navigation

Logo

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 codecov.io DOI
Build Status Build Status2 codecov.io

Its capabilities include:

  • JuMP-like symbolic macro interface
  • Infinite set 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.

License

InfiniteOpt is licensed under the MIT "Expat" license.

Installation

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

(v1.5) pkg> add InfiniteOpt

Modeling Infinite-Dimensional Problems with InfiniteOpt.jl

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

Documentation

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

Citing

DOI

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

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

Project Status

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

Contributing

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.

About

An intuitive modeling interface for infinite-dimensional optimization problems.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Julia 100.0%