InfiniteOpt.jl

An intuitive modeling interface for infinite-dimensional optimization problems.
Popularity
182 Stars
Updated Last
11 Months Ago
Started In
August 2019

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.

🎉 v0.5 introduces general nonlinear modeling!: See the documentation for details.

📣 v0.5.1 now requires Julia 1.6 or newer

Current Version:

Documentation Build Status Citation
Build Status codecov.io DOI
Build Status codecov.io

It builds upon JuMP to add support for many complex modeling objects which include:

  • Infinite parameters (e.g., time, space, uncertainty, etc.)
  • Finite parameters (similar to ParameterJuMP)
  • Infinite variables (decision functions) (e.g., y(t, x))
  • Derivatives (e.g., ∂y(t, x)/∂t)
  • Measures (e.g., ∫y(t,x)dt, 𝔼[y(ξ)])
  • 1st class nonlinear modeling

The unifying modeling abstraction behind InfiniteOpt captures a wide spectrum of disciplines which include dynamic, PDE, stochastic, and semi-infinite optimization. Moreover, we facilitate transferring techniques between these to synthesize new optimization paradigms!

abstract

Comments, suggestions and improvements are welcome and appreciated.

License

InfiniteOpt is licensed under the MIT "Expat" license.

Installation

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

julia> ]

(v1.8) pkg> add InfiniteOpt

Documentation

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

Questions

For additional help please visit and post in our discussion forum.

Citing

DOI DOI

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

@article{pulsipher2022unifying,
      title = {A unifying modeling abstraction for infinite-dimensional optimization},
      journal = {Computers & Chemical Engineering},
      volume = {156},
      year = {2022},
      issn = {0098-1354},
      doi = {https://doi.org/10.1016/j.compchemeng.2021.107567},
      url = {https://www.sciencedirect.com/science/article/pii/S0098135421003458},
      author = {Joshua L. Pulsipher and Weiqi Zhang and Tyler J. Hongisto and Victor M. Zavala},
}

A pre-print version is freely available though arXiv.

Project Status

The package is tested against Julia 1.6 and 1.8 on Linux, Mac, 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.