JuliaSmoothOptimizers is an organization on GitHub containing a collection of Julia packages for Nonlinear Optimization software development, testing, and benchmarking. We provide tools for building models, access to repositories of problems, subproblem solving, linear algebra, and solving problems.

Below there is a brief summary of packages.

  • LinearOperators.jl provides matrix-like entities, which serve as basis for most of our large-scale operations.
  • Krylov.jl provides iterative solvers, all accepting matrices or LinearOperators. Alternatively, we provide wrappers for known linear algebra packages and some native implementations of factorizations.
  • Creating a cluster, NLPModels.jl, which provides different ways to create nonlinear programming and nonlinear least squares models. This includes access to CUTEst, AMPL, MPS/QPS, and provides interfaces with IPOPT and KNITRO.
  • In another cluster, we have our solver-related packages. SolverTools.jl and SolverBenchmark.jl provide tools for creating and comparing solvers, with publication ready LaTeX-tables, and performance profiles. JSOSolvers.jl provides some solvers implemented in this way, and CaNNOLeS.jl is a solver for constrained nonlinear least squares submitted for publication.


Model creation and collections

NLPModels This package provides general guidelines to represent optimization problems in Julia and a standardized API to evaluate the functions and their derivatives. The main objective is to be able to rely on that API when designing optimization solvers in Julia. Includes model creation from direct Julia functions and JuMP, and provides Nonlinear Programming and Nonlinear Least Squares models.

NLPModelsJuMP This package provides nonlinear programming models as implemented by NLPModels, through the use of JuMP.

CUTEst This package provides an interface to CUTEst, a repository of constrained and unconstrained nonlinear programming problems for testing and comparing optimization algorithms, derived from the abstract model on NLPModels.

AmplNLReader Provides access to AMPL Models. Uses NLPModels.jl.

OptimizationProblems Implements several problems in JuMP format. Can be used with NLPModels for easy multiplatform access to problems.

NLSProblems This package provides some optimization problems using the NLPModels interface. It is similar to to OptimizationProblems, except that it's specific for Nonlinear Least Squares, using the subtype AbstractNLSModels.

QuadraticModels A package to model linear and quadratic optimization problems using the NLPModels.jl data structures.

QPSReader A package to read linear optimization problems in fixed MPS format and quadratic optimization problems in QPS format.


JSOSolvers Optimization Algorithms in Pure Julia. The focus is to provide large-scale efficient and robust methods. Uses NLPModels for unified access to all problems above.

CaNNOLeS Constrained and NoNlinear Optimizer of Least Squares.

SolverTools A framework to build novel optimization algorithms in pure julia.

SolverBenchmark Provides general tools for benchmark solvers.

NLPModelsIpopt A thin IPOPT wrapper for NLPModels.

NLPModelsKnitro A thin KNITRO wrapper for NLPModels.


LinearOperators Operators behave like matrices (with some exceptions) but are defined by their effect when applied to a vector. They can be transposed, conjugated, or combined with other operators cheaply. The costly operation is deferred until multiplied with a vector.

BenchmarkProfiles Julia translation of the performance and data profiles of Elizabeth Dolan, Jorge Moré and Stefan Wild. Uses the Plots library, enabling the use of various backends.

Linear Algebra

AMD Given a square sparse matrix, compute an approximate minimum degree ordering. This package is an interface to the AMD library of Amestoy, Davis and Duff.

HSL Julia interface to some HSL packages for sparse linear algebra.

Krylov This package implements iterative methods for the solution of linear systems of equations and linear least-squares problems. It is appropriate, in particular, in situations where such a problem must be solved but a factorization is not possible

LDLFactorization A translation of Tim Davis's Concise LDL Factorization, part of SuiteSparse. This package is appropriate for matrices A that possess a factorization of the form LDLᵀ without pivoting, where L is unit lower triangular and D is diagonal (indefinite in general), including definite and quasi-definite matrices.

LimitedLDLFactorization A Port of LLDL to Julia See optimizers/lldl. LLDL is a limited-memory LDL' factorization for symmetric matrices.

MUMPS Julia interface to MUMPS. MUMPS is a library for the solution of large linear systems using a factorization. Structure can be exploited, such as symmetry, or symmetry and definiteness. The factorization and solve phases can be performed in parallel.

PROPACK A Julia interface to PROPACK, a library for the computation of the truncated singular value decomposition of matrices or linear operators. PROPACK only requires operator-vector products to estimate singular values and singular vectors.

qr_mumps Interface to multicore QR factorization qr_mumps. Currently broken.

SuiteSparseMatrixCollection A straightforward interface to the SuiteSparse Matrix Collection.

JSO usage Contribute by adding to the end of this file.

Cite as:
JuliaSmoothOptimizers. Dominique Orban and Abel Soares Siqueira. Zenodo. Apr, 2019. 10.5281/zenodo.2655082

  author = {D. Orban and A. S. Siqueira},
  title = {{JuliaSmoothOptimizers}: Infrastructure and Solvers for Continuous Optimization in {J}ulia},
  doi = {10.5281/zenodo.2655082},
  URL = {https://juliasmoothoptimizers.github.io},
  year = {2019},


  • Iterative Solution of Symmetric Quasi-Definite Linear Systems, D. Orban and M. Arioli, A Apr, 2017. Society for Industrial and Applied Mathematics.


  • A regularization method for constrained nonlinear least squares, Dominique Orban and Abel Soares Siqueira, (2020). Computational Optimization and Applications, 76, 961-989.
  • LNLQ: An Iterative Method for Least-Norm Problems with an Error Minimization Property, R. Estrin, D. Orban and M. A. Saunders, (2019). SIAM Journal On Matrix Analysis, 40(3), 1102–1124.
  • A Tridiagonalization Method for Symmetric Saddle-Point System, A. Buttari, D. Orban, D. Ruiz and D. Titley-Peloquin, (2019). SIAM Journal On Scientific Computing, 41(5), S409–S432.
  • The Conjugate Residual Method in Linesearch and Trust-Region Methods, M.-A. Dahito and D. Orban, (2019). SIAM Journal On Optimization, 29(3), 1988–2025.
  • LSLQ: An Iterative Method for Linear Least-Squares with an Error Minimization Property, R. Estrin, D. Orban and M. A. Saunders, (2019). SIAM Journal On Matrix Analysis, 40(1), 254-275.


  • Otimização na Linguagem Julia, Abel S. Siqueira, Jun 26, 2019. Palestra no Congresso Internacional de Biomassa - 4° Expo Biomassa - Curitiba/PR, Brazil..
  • JuliaSmoothOptimizers, Abel S. Siqueira, May 31, 2019. Talk at PPGM - UFPR. Curitiba/PR, Brazil..
  • JuliaSmoothOptimizers, Abel S. Siqueira, Feb 07, 2019. Tutorial: Modeling and optimization tools in Julia: An introduction to JuMP and JSO. GERAD. Montreal/QC, Canada.
  • A Regularized Interior-Point Method for Constrained Nonlinear Least Squares, Abel S. Siqueira and Dominique Orban, Jul 23, 2018. XII Brazilian Workshop on Continuous Optimization. Iguaçu Falls, Brazil..
  • Developing new optimization methods with packages from the JuliaSmoothOptimizers organization, Abel S. Siqueira and Dominique Orban, Jun 28, 2018. Second Annual JuMP-dev Workshop. Bordeaux, France.
  • Iterative Methods with an Error Minimization Property, Dominique Orban, Ron Estrin and Michael A. Saunders, May 31, 2018. LA/Opt Seminar, ICME, Stanford University.
  • Otimização Não-Linear na Linguagem Julia, Abel S. Siqueira, Dec 01, 2017. Seminários de Análise Convexa e Otimização. UFSC, Florianópolis/SC, Brasil.
  • A Workflow for Designing Optimization Methods in the Julia Language, Abel S. Siqueira and Dominique Orban, May 04, 2016. 2016 Optimization Days. Montréal, Canada.


  • Méthodes d'optimisation et contrôle optimal, Dominique Orban, A Jan, 2019. Polytechnique Montréal.
  • Otimização I, Abel S. Siqueira, A Jun, 2018. UFPR - Federal University of Paraná.
  • Advanced Topics in Scientific Computing with Julia, Brad Nelson, A Mar, 2018. Stanford University.