Solvers

The pyunlocbox.solvers module implements a solving function (which will minimize your objective function) as well as common solvers.

Solving

Call solve() to solve your convex optimization problem using your instantiated solver and functions objects.

Interface

The solver base class defines a common interface to all solvers:

solver.pre(self, functions, x0)

Solver-specific pre-processing.

solver.algo(self, objective, niter)

Call the solver iterative algorithm and the provided acceleration scheme.

solver.post(self)

Solver-specific post-processing.

Solvers

Then, derived classes implement various common solvers.

gradient_descent(**kwargs)

Gradient descent algorithm.

forward_backward([accel])

Forward-backward proximal splitting algorithm.

douglas_rachford([lambda_])

Douglas-Rachford proximal splitting algorithm.

generalized_forward_backward([lambda_])

Generalized forward-backward proximal splitting algorithm.

Primal-dual solvers (based on primal_dual)

mlfbf([L, Lt, d0])

Monotone+Lipschitz Forward-Backward-Forward primal-dual algorithm.

projection_based([lambda_])

Projection-based primal-dual algorithm.

Inheritance diagram of pyunlocbox.solvers