DCISolver - Dynamic Control of Infeasibility Solver
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
- LDLFactorizations.jl is used by default. Follow HSL.jl's
MA57
installation for an alternative. 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)