| / We implement this class function according to LKH [18] that is free for academic use./ |
| 1 class Heuristics |
| 2 { |
| 3 public: |
| / Heuristic object compute candidate sets as soon as created, second argument in |
| constructor is the number of candidates in each set./ |
| 4 Heuristics(Graph graph, int NumberOfCandidates); |
| 5 ~Heuristics(); |
| / Both of lines 6 and 7 shows the 2-OPT but function in line 6 consider all of nodes |
| as active but function 7 supposes only nodes in ActiveNodes array are active / |
| 6 void TwoOpt(Tour tour); |
| 7 void TwoOpt (Tour tour, int ActiveNodes, int NumberOfActiveNodes); |
| / Both of lines 8 and 9 shows the 3-OPT but function in line 8 consider all of nodes |
| as active but function 9 supposes only nodes in ActiveNodes array are active / |
| 8 void ThreeOpt(Tour tour); |
| 9 void ThreeOpt (Tour tour, int ActiveNodes, int NumberOfActiveNodes); |
| / Both of lines 10 and 11 shows the LK but function in line 10 consider all of nodes |
| as active but function 11 supposes only nodes in ActiveNodes array are active / |
| 10 void LinKernighan(Tour tour); |
| 11 void LinKernighan(Tour tour, int ActiveNodes, int NumberOfActiveNodes); |
| 12 void DoubleBridge(Tour tour); |
| 13 Tour Q_Boruvka(); |
| 14 int SetCandidates(int node, int candidate, int index); |
| 15 int GetCandidates(int node, int index); |
| 16 void SetBestTour(Tour best_tour); |
| 17 }; |