JuliaManifolds/Manopt.jl

Non-array manifold with JuMP/MOI

blegat opened this issue · 2 comments

In JuMP, we only define array-shaped points in manifold but as mentioned, e.g., in #264 (comment), 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

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)?

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 #273 (comment)