Advertisement
shamiul93

2-opt-best-final.cpp

Jan 20th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.98 KB | None | 0 0
  1. /***************2-Opt best improve start***********/
  2. void TwoOptHeuristicBestImprovement(vector<int> vec) {
  3. int ii = 0, jj = 0;
  4. Tour.clear();
  5. memset(Vis, 0, sizeof(Vis));
  6.  
  7. Tour = vec;
  8.  
  9. while (true) {
  10. double Curr = Cost(Tour);
  11. bool Changed = false;
  12.  
  13. for (int i = 0; i < Tour.size(); i++) {
  14. for (int j = i + 2; j < Tour.size(); j++) {
  15. reverse(Tour.begin() + i + 1, Tour.begin() + j + 1);
  16. double NewCost = Cost(Tour);
  17. if (NewCost < Curr) {
  18. Changed = true;
  19. ii = i;
  20. jj = j;
  21. Curr = NewCost;
  22. }
  23. reverse(Tour.begin() + i + 1, Tour.begin() + j + 1);
  24. }
  25. if (Changed) {
  26. reverse(Tour.begin() + ii + 1, Tour.begin() + jj + 1);
  27. break;
  28. }
  29. }
  30.  
  31. if (!Changed)
  32. break;
  33. }
  34. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement