https://github.com/juliasmoothoptimizers/jsosolvers.jl
https://github.com/juliasmoothoptimizers/jsosolvers.jl
Last synced: 7 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/juliasmoothoptimizers/jsosolvers.jl
- Owner: JuliaSmoothOptimizers
- License: other
- Created: 2019-02-20T23:49:53.000Z (over 7 years ago)
- Default Branch: main
- Last Pushed: 2025-06-03T12:05:29.000Z (about 1 year ago)
- Last Synced: 2025-06-03T12:27:07.426Z (about 1 year ago)
- Language: Julia
- Size: 3.18 MB
- Stars: 75
- Watchers: 7
- Forks: 15
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
- Citation: CITATION.cff
- Zenodo: .zenodo.json
Awesome Lists containing this project
README
# JSOSolvers.jl
[](https://doi.org/10.21105/joss.09467)
[](https://github.com/JuliaSmoothOptimizers/JSOSolvers.jl/releases/latest)
[](https://jso.dev/JSOSolvers.jl/stable)
[](https://jso.dev/JSOSolvers.jl/latest)
[](https://codecov.io/gh/JuliaSmoothOptimizers/JSOSolvers.jl)
[](https://github.com/JuliaSmoothOptimizers/JSOSolvers.jl/actions/workflows/ci.yml)
[](https://cirrus-ci.com/github/JuliaSmoothOptimizers/JSOSolvers.jl)
This package provides optimization solvers curated by the JuliaSmoothOptimizers
organization for unconstrained optimization
min f(x)
and bound-constrained optimization
min f(x) s.t. ℓ ≤ x ≤ u
This package provides an implementation of four classic algorithms for unconstrained/bound-constrained nonlinear optimization:
- `lbfgs`: an implementation of a limited-memory BFGS line-search method for unconstrained minimization;
> D. C. Liu, J. Nocedal. (1989). On the limited memory BFGS method for
> large scale optimization. *Mathematical Programming*, 45(1), 503-528.
> DOI: [10.1007/BF01589116](https://doi.org/10.1007/BF01589116)
- `R2`: a first-order quadratic regularization method for unconstrained optimization;
> E. G. Birgin, J. L. Gardenghi, J. M. Martínez, S. A. Santos, Ph. L. Toint. (2017).
> Worst-case evaluation complexity for unconstrained nonlinear optimization using
> high-order regularized models. *Mathematical Programming*, 163(1), 359-368.
> DOI: [10.1007/s10107-016-1065-8](https://doi.org/10.1007/s10107-016-1065-8)
- `fomo`: a first-order method with momentum for unconstrained optimization;
- `tron`: a pure Julia implementation of TRON, a trust-region solver for bound-constrained optimization described in
> Chih-Jen Lin and Jorge J. Moré, *Newton's Method for Large Bound-Constrained
> Optimization Problems*, SIAM J. Optim., 9(4), 1100–1127, 1999.
> DOI: [10.1137/S1052623498345075](https://www.doi.org/10.1137/S1052623498345075)
as well as a variant for nonlinear least-squares;
- `trunk`: a trust-region solver for unconstrained optimization using exact second derivatives. Our implementation follows the description given in
> A. R. Conn, N. I. M. Gould, and Ph. L. Toint,
> Trust-Region Methods, volume 1 of MPS/SIAM Series on Optimization.
> SIAM, Philadelphia, USA, 2000.
> DOI: [10.1137/1.9780898719857](https://www.doi.org/10.1137/1.9780898719857)
The package also contains a variant for nonlinear least-squares.
## Installation
`pkg> add JSOSolvers`
You can run the package’s unit tests with:
```julia
pkg> test JSOSolvers
```
## Example
```julia
using JSOSolvers, ADNLPModels
# Rosenbrock
nlp = ADNLPModel(x -> 100 * (x[2] - x[1]^2)^2 + (x[1] - 1)^2, [-1.2; 1.0])
stats = lbfgs(nlp) # or trunk, tron, R2
```
## Documentation
Click on the badge [](https://jso.dev/JSOSolvers.jl/stable) to access the documentation.
## How to cite
If you use JSOSolvers.jl in your work, please cite using the format given in [CITATION.cff](CITATION.cff).
# Bug reports and discussions
If you think you found a bug, feel free to open an [issue](https://github.com/JuliaSmoothOptimizers/JSOSolvers.jl/issues).
Focused suggestions and requests can also be opened as issues. Before opening a pull request, start an issue or a discussion on the topic, please.
If you want to ask a question not suited for a bug report, feel free to start a discussion [here](https://github.com/JuliaSmoothOptimizers/Organization/discussions). This forum is for general discussion about this repository and the [JuliaSmoothOptimizers](https://github.com/JuliaSmoothOptimizers), so questions about any of our packages are welcome.