I have a bunch of points in 3D whose positions I know approximately, with 
low-noise distance measurements between them (not necessarily fully connected). 
I want to improve my estimate of their 3D coordinates. This smells like an 
optimization problem so I’m thinking of using it as an excuse to learn JuMP. 
The model variables (coordinates) and objective function seem pretty 
straightforward (probably sum of squared distance errors for the objective?) 
but I don’t know enough about the various solvers to know which one to use. I 
know a tiny bit about optimization (I’ve implemented simplex, L-M, and 
conjugate GD for a class) but get quickly outside my depth when it gets 
theoretical.

Without any known positions the system is underconstrained because the whole 
collection could can translate, rotate, and reflect, but if I set 3 
non-colinear points at known positions it should be solvable. I can also supply 
pretty good guesses for initial values on locations, at least close enough that 
the closest minima is the one I want (I think).

so in short my questions boil down to:

1. What solver is appropriate for this sort of problem? (or should I just go 
with a spring-force algorithm like in GraphLayout.jl?)
2. (JuMP Specific) - Should I specify my known positions as model variables 
with equality constraints, or just normal julia variables that show up in my 
objective function?

Thanks!

-s

Reply via email to