Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pulsipher/InfiniteOpt.jl
An intuitive modeling interface for infinite-dimensional optimization problems.
https://github.com/pulsipher/InfiniteOpt.jl
differential-equations dynamic-programming julia measure-theory modeling-language nonlinear-optimization optimal-control optimization pde-constrained-optimization stochastic-optimization
Last synced: 28 days ago
JSON representation
An intuitive modeling interface for infinite-dimensional optimization problems.
- Host: GitHub
- URL: https://github.com/pulsipher/InfiniteOpt.jl
- Owner: infiniteopt
- License: mit
- Created: 2019-08-13T14:27:07.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-10-22T15:37:15.000Z (about 2 months ago)
- Last Synced: 2024-11-13T05:35:50.426Z (29 days ago)
- Topics: differential-equations, dynamic-programming, julia, measure-theory, modeling-language, nonlinear-optimization, optimal-control, optimization, pde-constrained-optimization, stochastic-optimization
- Language: Julia
- Homepage: https://infiniteopt.github.io/InfiniteOpt.jl/stable
- Size: 13.3 MB
- Stars: 254
- Watchers: 7
- Forks: 17
- Open Issues: 39
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-sciml - pulsipher/InfiniteOpt.jl: An intuitive modeling interface for infinite-dimensional optimization problems.
README
![Logo](full_logo.png)
---A `JuMP` extension for expressing and solving infinite-dimensional optimization
problems. Such areas include [stochastic programming](https://en.wikipedia.org/wiki/Stochastic_programming),
[dynamic programming](https://en.wikipedia.org/wiki/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.**Current Version:** [![](https://docs.juliahub.com/InfiniteOpt/version.svg)](https://juliahub.com/ui/Packages/InfiniteOpt/p3GvY) [![](https://docs.juliahub.com/InfiniteOpt/pkgeval.svg)](https://juliahub.com/ui/Packages/InfiniteOpt/p3GvY)
| **Documentation** | **Build Status** | **Citation** |
|:-------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------:|:--------------------------------------:|
| [![](https://img.shields.io/badge/docs-stable-blue.svg)](https://infiniteopt.github.io/InfiniteOpt.jl/stable) | [![Build Status](https://github.com/infiniteopt/InfiniteOpt.jl/workflows/CI/badge.svg?branch=release-0.5)](https://github.com/infiniteopt/InfiniteOpt.jl/actions?query=workflow%3ACI) [![codecov.io](https://codecov.io/github/infiniteopt/InfiniteOpt.jl/coverage.svg?branch=release-0.5)](https://codecov.io/github/infiniteopt/InfiniteOpt.jl?branch=release-0.5) | [![DOI](https://img.shields.io/badge/Elsevier-CompChemEng%3A107567-yellow.svg)](https://doi.org/10.1016/j.compchemeng.2021.107567) |
| [![](https://img.shields.io/badge/docs-dev-blue.svg)](https://infiniteopt.github.io/InfiniteOpt.jl/dev) | [![Build Status](https://github.com/infiniteopt/InfiniteOpt.jl/workflows/CI/badge.svg?branch=master)](https://github.com/infiniteopt/InfiniteOpt.jl/actions?query=workflow%3ACI) [![codecov.io](https://codecov.io/github/infiniteopt/InfiniteOpt.jl/coverage.svg?branch=master)](https://codecov.io/github/infiniteopt/InfiniteOpt.jl?branch=master) | |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(ΞΎ)]`)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](abstraction.png)
Comments, suggestions and improvements are welcome and appreciated.
## License
`InfiniteOpt` is licensed under the [MIT "Expat" license](./LICENSE).## Installation
`InfiniteOpt.jl` is a registered [Julia](https://julialang.org/) package and
can be installed by entering the following in the REPL.```julia
julia> ](v1.10) pkg> add InfiniteOpt
```## Documentation
[![](https://img.shields.io/badge/docs-stable-blue.svg)](https://infiniteopt.github.io/InfiniteOpt.jl/stable)Please visit our [documentation pages](https://infiniteopt.github.io/InfiniteOpt.jl/stable)
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](https://github.com/infiniteopt/InfiniteOpt.jl/discussions).## Citing
[![DOI](https://img.shields.io/badge/Elsevier-CompChemEng%3A107567-yellow.svg)](https://doi.org/10.1016/j.compchemeng.2021.107567)
[![DOI](https://img.shields.io/badge/math.OC-arXiv%3A2106.12689-B31B1B.svg)](https://arxiv.org/abs/2106.12689)If you use InfiniteOpt.jl in your research, we would greatly appreciate your
citing it.
```latex
@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](https://arxiv.org/abs/2106.12689).## Project Status
The package is tested against Julia `1.6` and `1.10` 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](https://github.com/infiniteopt/InfiniteOpt.jl/blob/master/CONTRIBUTING.md).