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

Relaxation correctly implemented? #3

Closed migarstka closed 6 years ago

migarstka commented 6 years ago

Wrong implementation of relaxation seems to be the major bug causing the convergence problems!

migarstka commented 6 years ago

The solution follows from Boyd - Distributed Optimization and Statistical Learning via the Alternating Direction Method of Multipliers s.3.4.3. Over-relaxation

In the z- and y-updates the quantity Ax(k+1) can be replaced with alpha*Ax(k+1) - (1-alpha)(Bz(k)-c).

For my ADMM equation the constraint is x=s, hence I do the following:

      xNew = from linear system
      xRelax = α*xNew+(1-α)*sPrev

      #relaxed s and lambda update
       sNew = Projections.sdcone( xRelax + (1/σ)*λPrev,r)
       λNew = λPrev + σ*(xRelax - sNew)