Awesome
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
-
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
-
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 inChih-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
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 inA. 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
The package also contains a variant for nonlinear least-squares.
Installation
pkg> add JSOSolvers
Example
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
How to cite
If you use JSOSolvers.jl in your work, please cite using the format given in CITATION.cff.
Bug reports and discussions
If you think you found a bug, feel free to open an issue. 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. This forum is for general discussion about this repository and the JuliaSmoothOptimizers, so questions about any of our packages are welcome.