We are very happy to announce the publication in the Journal of Open Source Software of the paper DCISolver.jl: A Julia Solver for Nonlinear Optimization using Dynamic Control of Infeasibility. It is accessible in open access here.
DCISolver.jl is a new pure Julia implementation of the Dynamic Control of Infeasibility method (DCI), introduced by Bielschowsky and Gomes in 2008, for solving the equality-constrained nonlinear optimization problem
where $f$ and $h$ are twice continuously differentiable.
DCI is an iterative method that aims to compute a local minimum using first and second-order derivatives.
Our initial motivation for developing
DCISolver.jl is to solve PDE-constrained optimization problems, many of which have equality constraints only.
DCISolver.jl is built upon the JuliaSmoothOptimizers (JSO) tools, and takes as input an
AbstractNLPModel, JSO's general model API defined in
NLPModels.jl, a flexible data type to evaluate objective and constraints, their derivatives, and to provide any information that a solver might request from a model. The user can hand-code derivatives, use automatic differentiation, or use JSO-interfaces to classical mathematical optimization modeling languages such as AMPL, CUTEst, or JuMP.
using DCISolver, ADNLPModels # Unconstrained Rosenbrock optimization nlp = ADNLPModel(x -> 100 * (x - x^2)^2 + (x - 1)^2, [-1.2; 1.0]) stats = dci(nlp) # Constrained optimization nlp = ADNLPModel(x -> 100 * (x - x^2)^2 + (x - 1)^2, [-1.2; 1.0], x->[x * x - 1], [0.0], [0.0]) stats = dci(nlp)
Migot, T., Orban, D., & Siqueira, A. S.
DCISolver. jl: A Julia Solver for Nonlinear Optimization using Dynamic Control of Infeasibility.
Journal of Open Source Software, 7(70), 3991 (2022).
Bielschowsky, R. H., & Gomes, F. A.
Dynamic control of infeasibility in equality constrained optimization.
SIAM Journal on Optimization, 19(3), 1299-1325 (2008).