Implement generic proximal Newton solver for solving nonsmooth minimization problems
This commit add a generic proximal Newton solver to solve non-smooth minimization problems of the form
min J(x) = f(x) + g(x)
where f is a smooth C^2 function and g is possibly non-smooth. The algorithm is based on the Solvers::LoopSolver
and inherits from Solvers::Solver
.
During the solve()
call increments of the second order subproblems
min 0.5*f''(x)[dx,dx] + f'(x)[dx] + g(x + dx) + r||dx||^2
are computed and the iterate is updated by x := x + dx
. Details and documentation are provided at the class definition.
A simple test case is added which solves a minimization problem with an analytical solution.