ADMMEqual specialises ADMM to the case $$A = I$$, $$B = -I$$, and $$\mathbf{c} = \mathbf{0}$$, for solving problems of the form

$\mathrm{argmin}_{\mathbf{x},\mathbf{y}} \; f(\mathbf{x}) + g(\mathbf{y}) \;\mathrm{such\;that}\; \mathbf{x} = \mathbf{y} \;\;.$

See admm.bpdn.BPDN as an example of a class derived from ADMMEqual.

The methods and attributes that should be overridden or defined are largely the same is described in ADMM, except that the specialisation removes the need for derived classes to override ADMMEqual.cnst_A, ADMMEqual.cnst_AT, ADMMEqual.cnst_B, and ADMMEqual.cnst_c. These differences are described in the following sections.

## Update Steps¶

The ADMM updates steps in ADMMEqual are effectively (via the constraint definition methods):

• ADMM.xstep

Solve

$\mathbf{x}^{(j+1)} = \mathrm{argmin}_{\mathbf{x}} \;\; f(\mathbf{x}) + \frac{\rho}{2} \left\| \mathbf{x} - \left(\mathbf{y}^{(j)} - \mathbf{u}^{(j)} \right) \right\|_2^2$
• ADMM.ystep

Solve

$\mathbf{y}^{(j+1)} = \mathrm{argmin}_{\mathbf{y}} \;\; g(\mathbf{y}) + \frac{\rho}{2} \left\| \mathbf{y} - \left( \mathbf{x}^{(j+1)} + \mathbf{u}^{(j)} \right) \right\|_2^2$
• ADMM.ustep

Update dual variable

$\mathbf{u}^{(j+1)} = \mathbf{u}^{(j)} + \mathbf{x}^{(j+1)} - \mathbf{y}^{(j+1)}$

As discussed in Update Steps, it is usually not necessary to override ADMM.ustep.

## Residual Evaluation¶

The residual evaluation methods in ADMMEqual are effectively (via the constraint definition methods):

These methods need not be overridden since the constraint definition methods in Constraint Definition are defined in ADMMEqual.