Advertisement
Guest User

Untitled

a guest
Dec 16th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.40 KB | None | 0 0
  1. public List<int> TweeOpt(int routeID, int startListIndex, int endListIndex)
  2.         {
  3.             List<int> bestRoute = Routes[routeID].GetRange(startListIndex+1, (endListIndex - startListIndex));
  4.             Boolean improved = true;
  5.  
  6.             while (improved)
  7.             {
  8.                 improved = false;
  9.                 for(int i = 0; i < bestRoute.Count-1; i++)
  10.                 {
  11.                     for(int j = i+1; j < bestRoute.Count; j++)
  12.                     {
  13.                         if (j - 1 == 1)
  14.                             continue;
  15.                         List<int> newRoute = OptSwap(bestRoute, i, j);
  16.                         if(CalculateSegmentTime(bestRoute) > CalculateSegmentTime(newRoute))
  17.                         {
  18.                             bestRoute = newRoute;
  19.                             improved = true;
  20.                         }
  21.                     }
  22.                 }
  23.             }
  24.             return bestRoute;
  25.         }
  26.         public List<int> OptSwap(List<int> route, int swapIndex1, int swapIndex2)
  27.         {
  28.             List<int> ordered = route.GetRange(0, swapIndex1);
  29.             List<int> reversed = route.GetRange(swapIndex1, (swapIndex2 - swapIndex1)+1);
  30.             reversed.Reverse();
  31.             ordered.AddRange(reversed);
  32.             ordered.AddRange(route.GetRange(swapIndex2 + 1, (route.Count - swapIndex2)-1));
  33.  
  34.             return ordered;
  35.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement