problems.admm

Module: problems.admm

Inheritance diagram for regreg.problems.admm:

digraph inheritance8d3202100a { rankdir=LR; size="8.0, 12.0"; "problems.admm.admm_problem" [URL="#regreg.problems.admm.admm_problem",fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5)",target="_top",tooltip="Objective function is the loss plus the atom composed with the transform."]; }

Simple ADMM implementation

admm_problem

class regreg.problems.admm.admm_problem(loss, atom, transform, augmented_param, quadratic=None, fit_args={})

Bases: object

Objective function is the loss plus the atom composed with the transform.

\[\ell(x) + {\cal P}(Dx + lpha)\]

Our transform is a map \(eta \mapsto Deta + lpha, and we introduce new variables \) so our affine constraint is Dx-z=-lpha:math:.

In ADMM slides p.14 of https://stanford.edu/class/ee364b/lectures/admm_slides.pdf we have `A,B,c=D,-I,-lpha$.

__init__(loss, atom, transform, augmented_param, quadratic=None, fit_args={})

Initialize self. See help(type(self)) for accurate signature.

solve(niter=20)
update_atom_coefs()

Minimize over z: atom(z) + rho/2 |z-Dx-lpha|^2_2 - z^Ty

update_dual_coefs()

Dual update

update_loss_coefs()

Minimize over x: self.loss(x) + rho/2 x^TD^TDx + x^T D^T(y -rho * (z - lpha))