Skip to content

Update Pock-Chambolle to match 2011 paper#52

Open
klamike wants to merge 9 commits into
mainfrom
mk/pockfix
Open

Update Pock-Chambolle to match 2011 paper#52
klamike wants to merge 9 commits into
mainfrom
mk/pockfix

Conversation

@klamike

@klamike klamike commented May 11, 2026

Copy link
Copy Markdown
Collaborator

We had the exponents swapped, and forgot to undo the outer power. This PR fixes the formulas to match the paper (except for the exponents, where we adopt the PDLP convention to be aligned with other solvers). It also adds a short section about it to the docs.

Reusing the diagonal_norm function (while incorporating the correctness fix) would be extra work ((x^(1/p))^p), so we introduce a special helper for the column-power-sum (without the outer power).

@klamike klamike requested a review from gdalle May 11, 2026 21:40
Comment thread src/utils/linalg.jl
Comment thread docs/src/math.md

> Pock, Thomas, and Antonin Chambolle. "Diagonal preconditioning for first order primal-dual algorithms in convex optimization." *2011 International Conference on Computer Vision*. IEEE, 2011. [doi:10.1109/ICCV.2011.6126441](https://doi.org/10.1109/ICCV.2011.6126441)

for matrix $K$ of size $m \times n$ and $\alpha \in [0, 2]$, the diagonal factors are

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In our code the constraint matrix is called A

@klamike klamike May 13, 2026

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Was just sticking to the Pock-Chambolle paper here. Also, we will use it for Q in the upcoming convex QP support (well, for K = [Q A'; A 0 ])

Comment thread docs/src/math.md Outdated
Comment thread docs/src/math.md Outdated
Comment thread docs/src/math.md Outdated
Comment thread docs/src/math.md

Following Lemma 2 of:

> Pock, Thomas, and Antonin Chambolle. "Diagonal preconditioning for first order primal-dual algorithms in convex optimization." *2011 International Conference on Computer Vision*. IEEE, 2011. [doi:10.1109/ICCV.2011.6126441](https://doi.org/10.1109/ICCV.2011.6126441)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We may want to start using DocumenterCitations.jl

Comment thread src/utils/linalg.jl
Comment thread src/utils/linalg.jl Outdated
Comment thread src/utils/linalg.jl
"""
column_power_sum(A, j, p)

Return `sum_i |A[i, j]|^p`. Zero entries are treated as contributing `0` (not `0^0 = 1`),

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure why you say the initial implementation was incorrect. Doesn't LinearAlgebra.norm(x, p) take care of undoing the inner power at the end?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

was $\frac{1}{\sqrt{\left(\sum_k |x_k|^p\right)^{1/p}}}$, should be $\frac{1}{\sqrt{\sum_k |x_k|^p}}$

klamike and others added 5 commits May 13, 2026 16:06
Co-authored-by: Guillaume Dalle <22795598+gdalle@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants