本文整理汇总了C++中WorldMap::GetworstPath方法的典型用法代码示例。如果您正苦于以下问题:C++ WorldMap::GetworstPath方法的具体用法?C++ WorldMap::GetworstPath怎么用?C++ WorldMap::GetworstPath使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WorldMap
的用法示例。
在下文中一共展示了WorldMap::GetworstPath方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
//.........这里部分代码省略.........
//#pragma omp parallel for shared(worldMap, srodek) num_threads(4)
vector<Town*> currentBestPath = worldMap->GetbestPath();
for(int i = 0; i < currentBestPath.size();++i) {
int xSuma = (currentBestPath)[i]->GetX();
int ySuma = (currentBestPath)[i]->GetY();
for(int j = 1; j < n; ++j) {
xSuma += (worldMap->Getpaths())[sympleks[j]][i]->GetX();
ySuma += (worldMap->Getpaths())[sympleks[j]][i]->GetY();
}
xSuma /= n;
ySuma /= n;
//cout<<"\nwatek: "<<omp_get_thread_num ();
srodek.push_back(new Town(xSuma, ySuma, 7+i, "srodek"));
}
//operacja odbicia ostatniego punktu sympleksu wzgledem srodka sympleksu
//#pragma omp parallel for shared(worldMap, odbicie, srodek, sympleks) num_threads(4)
for(int i = 0; i < srodek.size(); ++i) {
int x = 2*srodek[i]->GetX() - ((worldMap->Getpaths())[sympleks[sympleks.size()-1]])[i]->GetX();
int y = 2*srodek[i]->GetY() - ((worldMap->Getpaths())[sympleks[sympleks.size()-1]])[i]->GetY();
Town* t = new Town(x,y,srodek[i]->Getid(),srodek[i]->Getname());
odbicie.push_back(t);
}
if(iii%10 == 0) {
for(int i = 0; i < odbicie.size(); ++i) {
int x = odbicie[i]->GetX() + 1.5 * (odbicie[i]->GetX() - srodek[i]->GetX());
int y = odbicie[i]->GetY() + 1.5 * (odbicie[i]->GetY() - srodek[i]->GetY());
Town* t = new Town(x,y,odbicie[i]->Getid(),odbicie[i]->Getname());
ekspansja.push_back(t);
}
lepsza = worldMap->adjustPath(ekspansja);
//czy jest to punkt lepszy od ostatniego?
if(worldMap->computePathLength(lepsza) < worldMap->computePathLength(worldMap->GetworstPath())) {
#pragma opm critical
worldMap->changePath(worst, lepsza);
//wyznacz punkt najlepszy i najgorszy
#pragma opm critical
best = worldMap->findBestPath();
#pragma opm critical
worst = worldMap->findWorstPath();
utknal = 0;
}
else {
utknal++;
}
}
else if(iii%15 == 0) {
for(int i = 0; i < srodek.size(); ++i) {
int x = srodek[i]->GetX() + 0.5 * (worldMap->Getpaths()[worst][i]->GetX() - srodek[i]->GetX());
int y = srodek[i]->GetY() + 0.5 * (worldMap->Getpaths()[worst][i]->GetY() - srodek[i]->GetY());
Town* t = new Town(x,y,srodek[i]->Getid(),srodek[i]->Getname());
kontrakcja.push_back(t);
}
lepsza = worldMap->adjustPath(kontrakcja);
//czy jest to punkt lepszy od ostatniego?
if(worldMap->computePathLength(lepsza) < worldMap->computePathLength(worldMap->GetworstPath())) {
#pragma opm critical
worldMap->changePath(worst, lepsza);
//wyznacz punkt najlepszy i najgorszy
#pragma opm critical
best = worldMap->findBestPath();
#pragma opm critical
worst = worldMap->findWorstPath();
utknal = 0;
}