当前位置: 首页>>代码示例>>C++>>正文


C++ WorldMap::changePath方法代码示例

本文整理汇总了C++中WorldMap::changePath方法的典型用法代码示例。如果您正苦于以下问题:C++ WorldMap::changePath方法的具体用法?C++ WorldMap::changePath怎么用?C++ WorldMap::changePath使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在WorldMap的用法示例。


在下文中一共展示了WorldMap::changePath方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: main


//.........这里部分代码省略.........
        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;
            }
            else {
                utknal++;
开发者ID:AniaWujek,项目名称:PORR,代码行数:67,代码来源:main.cpp


注:本文中的WorldMap::changePath方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。