# JSOSolvers.jl documentation

This package provides optimization solvers curated by the JuliaSmoothOptimizers organization. All solvers are based on SolverTools.jl.

TODO:

• [ ] Show benchmarks of these solvers (using SolverBenchmark.jl);
• [ ] Profile solver to identify bottlenecks;
• [ ] Use PkgBenchmark and SolverBenchmark to compare future PRs.

## Solver input and output

All solvers use the input and output given by SolverTools. Every solver has the following call signature:

    stats = solver(nlp; x, atol, rtol, max_eval, max_time, ...)

where

• nlp is an AbstractNLPModel or some specialization, such as an AbstractNLSModel;
• x is the starting default (default: nlp.meta.x0);
• atol is the absolute stopping tolerance (default: atol = √ϵ);
• rtol is the relative stopping tolerance (default: rtol = √ϵ);
• max_eval is the maximum number of objective and constraints function evaluations (default: -1, which means no limit);
• max_time is the maximum allowed elapsed time (default: 30.0);
• stats is a SolverTools.GenericExecutionStats with the output of the solver.