ADMMEqual¶
ADMMEqual
specialises ADMM
to the case
\(A = I\), \(B = -I\), and \(\mathbf{c} = \mathbf{0}\),
for solving problems of the form
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):
-
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\] -
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\] -
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):
-
Compute primal residual
\[\mathbf{r} = \mathbf{x}^{(j+1)} - \mathbf{y}^{(j+1)}\] -
Compute dual residual
\[\mathbf{s} = \rho (\mathbf{y}^{(j)} - \mathbf{y}^{(j+1)})\] -
Compute primal residual normalisation factor
\[\mathrm{rn} = \mathrm{max}(\|\mathbf{x}^{(j+1)}\|_2, \|\mathbf{y}^{(j+1)}\|_2)\] -
Compute dual residual normalisation factor
\[\mathrm{sn} = \rho \|\mathbf{u}^{(j+1)} \|_2\]
These methods need not be overridden since the constraint definition
methods in Constraint Definition are defined in
ADMMEqual
.