Skip to content

LADMM docstring states the wrong optimisation problem (roles of f and g are swapped) #2366

Description

@MargaretDuff

The LADMM class docstring says the algorithm solves

$$\min_x f(Kx) + g(x)$$

but the implementation and update_objective actually solves

$$\min_x f(x) + g(Kx)$$

A user following the docstring will pass f and g the wrong way round.

Also need to checkdocs/source/optimisation.rst.

Why the code (not the docstring) is right

  • self.f.proximal is applied to self.x, which lives in operator.domain_geometry(); self.g.proximal is applied to self.u, which lives in operator.range_geometry(). So f acts on the domain and g acts on the range.
  • The tests assume this convention: In test_Adaptive_LADMM (Wrappers/Python/test/test_algorithm_convergence.py), with K = alpha*GradientOperator(ig):

I think the issue is that the splitting is written incorrectly or $\min_x f(x) + g(Kx)$, written as $\min f(x) + g(y)$ s.t. $Ax + By = b$, the correct choice is $A = K$, $B = -Id$, $b = 0$ (giving $Kx = y$). The docstring says $A = Id$, $B = -K$, which corresponds to $x = Ky$ and is what produces the swapped objective.

Note - this makes it swapped compared to PDHG where f acts on the range and g on the domain - maybe a question of consistency there?

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions