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
