I would rather present this as a comment on Martin Hawk's answer, because I am addressing a possible oversight that would be easy to do by implementing his proposal.
The branching and binding algorithm should be combined with the least cost path restoration algorithm taking into account the output of the Floyd-Warsall algorithm. The branch and bound algorithm is an outer loop, and it selects invisible nodes. Then you use the least cost recovery algorithm to actually add edges and nodes to your loop. The nodes should be marked as visited by the least cost recovery algorithm, not just the branch and related part.
source share