Open jc211 opened 5 years ago
Are you thinking about an algorithm in particular?
They just want to introduce the same stuff that we do in Optim. There’s a WIP (though idle) package called ManifoldProjections.jl (i Think)
Does it make sense to have the same functionalities in both Optim and here (if I understood properly)?
I haven't been able to figure out how to incorporate the ManifoldProjections.jl package to do what I wanted. What I have been able to do is pass in the "plus" function as an input to the levenberg marquardt algorithm. This allows me to define the retractions in the plus function itself.
Does it make sense to have the same functionalities in both Optim and here (if I understood properly)?
The idea is to have it outside of Optim, and use retract!
and project_tanget!
in Optim (already used there, but they're defined inside of Optim, we're not yet using ManifoldProjections) and in LsqFit, as @jc211 says, instead of "+
". That is, we take the current state, add the step and then retract it to the manifold. It shouldn't bee too much work, it just has to be done! A first step would probably be to replace the internal stuff in Optim with ManifoldProjections.
I'm curious about all this but I'm seemingly too unfamiliar with projection on manifolds to grasp what is going on. When projecting the tangent for example, is it related to covariant derivatives?
@jc211 can you elaborate a little more, of which curve fitting you actually want to do on manifold? On the one hand, we are currently working on Manifolds.jl ( see https://github.com/JuliaNLSolvers/Manifolds.jl ) which might end up also in here, on the other hand I am currently finishing to transfer code that I wrote for some curve fitting using Bézier curves on manifolds ( see here ) to Manopt.jl (see https://manoptjl.org) – so maybe I can help?
I would like to add the ability to perform levenberg marquardt optimization on a manifold. The manifold structure is already defined in Optim.jl. I was hoping they could split the files out so I could add it as a dependency here. Is this something that would be acceptable?