浏览代码

Experimental: constraint for diversification (max 150% of current optimum length)

Jan Potocki 5 年前
父节点
当前提交
20160689f4
共有 1 个文件被更改,包括 18 次插入6 次删除
  1. 18
    6
      Graph.cpp

+ 18
- 6
Graph.cpp 查看文件

676
             }
676
             }
677
             else
677
             else
678
             {
678
             {
679
-                // W innym przypadku wlasciwa dywersyfikacja przez wygenerowanie nowego
680
-                // rozwiazania startowego algorytmem hybrydowym losowo-zachlannym
681
-                currentRoute = Graph::travellingSalesmanHybrid(graph);
682
-                currentTabuSteps = tabuSteps;
683
-                intensification = false;
684
-
685
                 // Synchronizacja globalnie najlepszej trasy (2)
679
                 // Synchronizacja globalnie najlepszej trasy (2)
686
                 globalOptimumMutex.lock();
680
                 globalOptimumMutex.lock();
687
                 optimalRouteLength = globalOptimumLength;
681
                 optimalRouteLength = globalOptimumLength;
688
                 optimalRoute = globalOptimum;
682
                 optimalRoute = globalOptimum;
689
                 globalOptimumMutex.unlock();
683
                 globalOptimumMutex.unlock();
684
+
685
+                // W innym przypadku wlasciwa dywersyfikacja przez wygenerowanie nowego
686
+                // rozwiazania startowego algorytmem hybrydowym losowo-zachlannym
687
+                // (ale nie znacznie gorszego niz juz znalezione)
688
+                int criticalLength = (15 * optimalRouteLength) / 10;
689
+                int currentRouteLength;
690
+
691
+                do
692
+                {
693
+                    currentRoute = Graph::travellingSalesmanHybrid(graph);
694
+                    currentRouteLength = 0;
695
+                    
696
+                    for(int i = 1; i < currentRoute.size(); i++)
697
+                        currentRouteLength += graph.getWeight(currentRoute.at(i - 1), currentRoute.at(i));
698
+                } while(currentRouteLength > criticalLength);
699
+
700
+                currentTabuSteps = tabuSteps;
701
+                intensification = false;
690
             }
702
             }
691
         }
703
         }
692
 
704
 

正在加载...
取消
保存