Skip to content

JuliaSmoothOptimizers/JSOSolvers.jl

Repository files navigation

JSOSolvers.jl

DOI GitHub release codecov

CI Cirrus CI - Base Branch Build Status

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 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

    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

    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.