oxfordcontrol / COSMO.jl

COSMO: Accelerated ADMM-based solver for convex conic optimisation problems (LP, QP, SOCP, SDP, ExpCP, PowCP). Automatic chordal decomposition of sparse semidefinite programs.
https://oxfordcontrol.github.io/COSMO.jl/stable
Apache License 2.0
283 stars 41 forks source link

Correct Residuals and Convergence Condition #1

Closed migarstka closed 6 years ago

migarstka commented 6 years ago

Find the correct residuals for the SDP case to have a working termination criterion. Currently, the following is used:

Problem:

min 1/2x'Px+q'x
s.t. Ax=z, z=b, x=s and s in S+
r_prim = Ax - z
r_dual = Px+q+A'mu+\lambda

Argument for feasibility of other primal variables: z = b, x = s is ensured by projections and therefore not necessarily considered in the primal residual

Strictly following the Boyd ADMM paper the dual residual should be:

r_dual = sigma * (s_k+1 - s_k)
migarstka commented 6 years ago

Right now I am using the following (based on the optimality conditions of the problem):

r_prim1 = norm(A*xNew - zNew,Inf)
r_prim2 = norm( (xNew - sNew),Inf)
r_dual = norm(P*xNew + q + λNew + A'*ν,Inf)

Confirmed by Paul and Mark, just have to make sure that terms are normalized properly. Implemented in commit 8576894