Manopt.jl icon indicating copy to clipboard operation
Manopt.jl copied to clipboard

Non-array manifold with JuMP/MOI

Open blegat opened this issue 2 years ago • 2 comments

In JuMP, we only define array-shaped points in manifold but as mentioned, e.g., in https://github.com/JuliaManifolds/Manopt.jl/pull/264#issuecomment-1600473005, for FixedRankMatrices they could also be represented by their SVD. We should make this work:

@variable(model, X in FixedRankMatrices(m, n, r))
@objective(model, Min, RiemannianFirstOrderFunction(X -> ..., (g, X) -> ...)))

Any good example of m, n, r and riemannian objective and gradient we could use as test for this ?

Requires

  • [ ] https://github.com/JuliaManifolds/Manopt.jl/issues/273

blegat avatar Jun 21 '23 09:06 blegat

A good example to use would be the Matrix Completion as discussed by Vandereycken in https://arxiv.org/pdf/1209.3834.pdf.

It would probably be best to add such an example directly to ManoptExamples https://github.com/JuliaManifolds/ManoptExamples.jl.

I think I understand your first line of code, you ant to allow X to be an SVDMPoint? I do not yet understand the second line the RiemannianFirstOrderFunction would basically be a ManifoldGradientObjective with slightly different signatures of cost and grad (namely leaving out the manifold - or hardcoding it in the function otherwise)?

kellertuer avatar Jun 21 '23 10:06 kellertuer

I think I understand your first line of code, you ant to allow X to be an SVDMPoint?

Yes

I do not yet understand the second line the RiemannianFirstOrderFunction would basically be a ManifoldGradientObjective with slightly different signatures of cost and grad (namely leaving out the manifold - or hardcoding it in the function otherwise)?

Indeed, I think we can even go for https://github.com/JuliaManifolds/Manopt.jl/issues/273#issuecomment-1600576919

blegat avatar Jun 21 '23 10:06 blegat