"How does your current algorithm pick one currently?"
We find an initial solution with an analytical solver. We have limited the solution space by not allowing the robot to flip wrist, elbow etc (joint limits are automatically generated in our software when the DH parameters are determined). This means that there generally only is one solution (except for the cases where A6 can be turned 360 degrees and still be within joint limits. In that case we have an algorithm for which solution to choose).
In our new software, we would like to avoid limiting the joints like that, we want to be able to use the robot it its entire working range.