TSPImprover should use InversionManipulator's Apply method
|Reported by:||abeham||Owned by:||jkarder|
The TSPImprover reimplements an invert functionality (with a rather obscure if condition and some xor trickery) which can be replaced with a simple call to InversionManipulator.Apply(..).
Also it can happen that both breakpoints are the same which wouldn't have any effect on the fitness function. There are more cases of inversion moves that you don't want to sample such as inverting the whole permutation or inverting all but one element in the permutation. Neither of these moves changes the fitness value for the symmetric tsp. I think these are even calculated wrongly. You can see that the improvement is very ineffective if you compare a LocalSearch applying 10000 improvement steps to the ch130 vs 10000 improvement attempts of the TSPImprover. The first can achieve a quality as low as in the 8000s, while the latter hardly goes beyond 30000. I don't think that operator is working as expected.
Change History (9)
comment:3 Changed 2 years ago by jkarder
- Owner changed from jkarder to abeham
- Status changed from accepted to reviewing
comment:4 follow-up: ↓ 6 Changed 2 years ago by abeham
- Owner changed from abeham to jkarder
- Status changed from reviewing to assigned