Can't TSP be converted to your problem? If you have TSP with distance(Xi, Xj)=Dij, then convert it to your problem by letting distance(X'i, X'j)=distance(X'j, X'i)=-Dij. or if only positive weights are allowed then use max(D)-Dij. Jeff