Skip to content

Instantly share code, notes, and snippets.

@shamiul94
Created January 20, 2019 08:46
Show Gist options
  • Save shamiul94/91a59296b43c7f5243692ff7827d56be to your computer and use it in GitHub Desktop.
Save shamiul94/91a59296b43c7f5243692ff7827d56be to your computer and use it in GitHub Desktop.
/***************2-Opt best improve start***********/
void TwoOptHeuristicBestImprovement(vector<int> vec) {
int ii, jj;
Tour.clear();
memset(Vis, 0, sizeof(Vis));
Tour = vec;
while (true) {
double Curr = Cost(Tour);
bool Changed = false;
for (int i = 0; i < Tour.size(); i++) {
for (int j = i + 2; j < Tour.size(); j++) {
reverse(Tour.begin() + i + 1, Tour.begin() + j + 1);
double NewCost = Cost(Tour);
if (NewCost < Curr) {
Changed = true;
ii = i;
jj = j;
Curr = NewCost;
}
reverse(Tour.begin() + i + 1, Tour.begin() + j + 1);
}
if (Changed) {
reverse(Tour.begin() + ii + 1, Tour.begin() + jj + 1);
}
}
if (!Changed)
break;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment