astro-informatics / sopt

Sparse OPTimisation using state-of-the-art convex optimisation algorithms.
http://astro-informatics.github.io/sopt/
GNU General Public License v2.0
8 stars 10 forks source link

Does PADMM allow weights as an input parameter? #88

Closed Luke-Pratley closed 8 years ago

Luke-Pratley commented 8 years ago

I have been testing PADMM on real data using purify, I have been comparing it to the matlab version.

In particular, the matlab version of purify uses sopt_mltb_admm_bpconw, which allows weights. Does the cpp version of PADMM allow weights as an input parameter?

mdavezac commented 8 years ago

With PADMM, you can set l1_proximal_weights (scales as the number of wavelets) and l2ball_proximal_weights (scales as the number of visibilities).

Otherwise, you could incorporate them directly into the definition of the linear-transforms (mathematically, adding weights means replacing the linear transform A with D*A,where D is diagonal), or into the definition of the proximal functions. That's how it should be done for SDMM.

mdavezac commented 8 years ago

There is an example of adding weights to sdmm in c87088e

Luke-Pratley commented 8 years ago

@mdavezac , thanks that is quite useful to see. In this example, are the weights on the l2 norm, or l1 norm?

mdavezac commented 8 years ago

On the l1 norm. I don't completely follow how it works. It seems the weights are added into the proximal of the l1 norm rather than \Psi. I'm just following sopt_l1_sdmm here...

Luke-Pratley commented 8 years ago

Cool. With the l2 norm, it is just a standard weight matrix, D, as you suggested, right?

mdavezac commented 8 years ago

It's equivalent, though it's also snuck into the proximal function WeightedL2Ball.