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
Documentation | Build Status | Citation |
---|---|---|
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!
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.9) 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
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.9
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.