> Also anything dealing with finding the minimum distance distances can be short circuited by keeping the shortest distance and not taking paths that exceed that.
That's the "bound" part of "branch-and-bound", so MILP-solvers already do this.
> You can also cluster points knowing you probably don't want to jump from one cluster to another multiple times.
You can incorporate heuristics into the branch-and-bound algorithm, but the goal of MILP-solvers is generally to produce an optimal solution (or at least a solution that is _provably_ within x% of optimality).
If you don't care about optimality and just want a solution that's good enough, I would implement the Christofides–Serdyukov algorithm.
That's the "bound" part of "branch-and-bound", so MILP-solvers already do this.
> You can also cluster points knowing you probably don't want to jump from one cluster to another multiple times.
You can incorporate heuristics into the branch-and-bound algorithm, but the goal of MILP-solvers is generally to produce an optimal solution (or at least a solution that is _provably_ within x% of optimality).
If you don't care about optimality and just want a solution that's good enough, I would implement the Christofides–Serdyukov algorithm.