The NDOSolver/FiOracle is a suite of C++ solvers for NonDifferentiable Optimization problems whose interface is based on the pair of abstract classes NDOSolver and FiOracle.
Besides the abstract base classes NDOSolver and FiOracle, the project provides the following algorithms:
The SubGrad NDOSolver implements a large and parametric class of SubGradient-type algorithms that allow simultaneous deflection and projection.
The CutPlane NDOSolver, is a "didactic" implementation of Kelley's Cutting Plane approach, the "father" of most modern NDO approaches.
The Bundle NDOSolver, a full-fledged implementation of a generalized Bundle method, allowing for both proximal-type and trust-region-type stabilization terms. Indeed, it relies on the abstract class MPSolver to solve the master problem, and it is currently distributed with two specific MPSolver implementations: QPPenaltyMP, a custom-made active-set solver for the master problem of the Proximal Bundle method with one component, and OSIMPSolver, which relies on an OsiSolverInterface object to solve the master problem with either proximal or trust region stabilization, supporting disaggregated models for FiOracle with multiple components as well as "easy omponents".
Also, some test FiOracle are distributed.
License: LGPL 3.0
Date: May 13, 2019
The code has its own GitLab repository.