DCISolver - Dynamic Control of Infeasibility Solver

CIcodecovGitHub

DCI is a solver for equality-constrained nonlinear problems, i.e., optimization problems of the form

min f(x)     s.t.     c(x) = 0.

It uses other JuliaSmoothOptimizers packages for development. In particular, NLPModels.jl is used for defining the problem, and SolverCore for the output. It also uses HSL.jl's MA57 as main solver, but you can pass linsolve=:ldlfactorizations to use LDLFactorizations.jl. The feasibility steps are factorization-free and use iterative methods from Krylov.jl

References

Bielschowsky, R. H., & Gomes, F. A. Dynamic control of infeasibility in equality constrained optimization. SIAM Journal on Optimization, 19(3), 1299-1325 (2008). 10.1007/s10589-020-00201-2

Installation

  1. LDLFactorizations.jl is used by default. Follow HSL.jl's MA57 installation for an alternative.
  2. pkg> add https://github.com/JuliaSmoothOptimizers/DCISolver.jl

Example

using DCISolver, NLPModels

# Rosenbrock
nlp = ADNLPModel(x -> 100 * (x[2] - x[1]^2)^2 + (x[1] - 1)^2, [-1.2; 1.0])
stats = dci(nlp, nlp.meta.x0)

# Constrained
nlp = ADNLPModel(x -> 100 * (x[2] - x[1]^2)^2 + (x[1] - 1)^2, [-1.2; 1.0],
                 x->[x[1] * x[2] - 1], [0.0], [0.0])
stats = dci(nlp, nlp.meta.x0)