Skip to content

Improve return codes from OptimizationManopt #1034

@ChrisRackauckas

Description

@ChrisRackauckas

In #1009 it was mentioned that the return codes from OptimizationManopt always return failure. This is because https://github.com/SciML/Optimization.jl/blob/v4.8.0/lib/OptimizationManopt/src/OptimizationManopt.jl#L460 it's overridden so that it's always Success or Failure. I am not sure why Manopt.indicates_convergence(asc) is always false but that would be the reason for seeing the Failure outputs. My guess is that the comment isn't supposed to mean "it always returns failure" but instead is maybe something more specific, like "it always returns failure on this specific example"? @kellertuer it would help if you could clarify this.

My guess as to where the disconnect comes from is that:

prob = OptimizationProblem(optf, U; manifold = M, maxiters = 1000)

sol = Optimization.solve(
    prob, opt, sub_problem = (M, q, p, X) -> closed_form_solution!(M, q, L, U, p, X))

This solves for 1000 iterations, and then when we check Manopt.indicates_convergence(asc) that says it did not converge in 1000 iterations. The right thing to do here may be to override that convergence check if the exit condition is due to hitting maximum iterations.

@kellertuer are all of the examples you encountered that you're talking about similar? Because if so then it seems like that has an easy fix. Otherwise I'll need more information as to what you're referring to.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions