Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
12/14/16 10:16:50 (7 years ago)
Author:
sraggl
Message:

#2701 Merged with trunk to get new version of LinearLinkageEncoding
Improved MoveGenerator

Location:
branches/MemPRAlgorithm/HeuristicLab.Encodings.LinearLinkageEncoding
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/MemPRAlgorithm/HeuristicLab.Encodings.LinearLinkageEncoding

    • Property svn:mergeinfo set to (toggle deleted branches)
      /branches/crossvalidation-2434/HeuristicLab.Encodings.LinearLinkageEncodingmergedeligible
      /stable/HeuristicLab.Encodings.LinearLinkageEncodingmergedeligible
      /trunk/sources/HeuristicLab.Encodings.LinearLinkageEncodingmergedeligible
      /branches/1721-RandomForestPersistence/HeuristicLab.Encodings.LinearLinkageEncoding10321-10322
      /branches/Algorithms.GradientDescent/HeuristicLab.Encodings.LinearLinkageEncoding5516-5520
      /branches/Benchmarking/sources/HeuristicLab.Encodings.LinearLinkageEncoding6917-7005
      /branches/CloningRefactoring/HeuristicLab.Encodings.LinearLinkageEncoding4656-4721
      /branches/CodeEditor/HeuristicLab.Encodings.LinearLinkageEncoding11700-11806
      /branches/DataAnalysis Refactoring/HeuristicLab.Encodings.LinearLinkageEncoding5471-5808
      /branches/DataAnalysis SolutionEnsembles/HeuristicLab.Encodings.LinearLinkageEncoding5815-6180
      /branches/DataAnalysis/HeuristicLab.Encodings.LinearLinkageEncoding4458-4459,​4462,​4464
      /branches/DataPreprocessing/HeuristicLab.Encodings.LinearLinkageEncoding10085-11101
      /branches/GP.Grammar.Editor/HeuristicLab.Encodings.LinearLinkageEncoding6284-6795
      /branches/GP.Symbols (TimeLag, Diff, Integral)/HeuristicLab.Encodings.LinearLinkageEncoding5060
      /branches/HLScript/HeuristicLab.Encodings.LinearLinkageEncoding10331-10358
      /branches/HeuristicLab.DatasetRefactor/sources/HeuristicLab.Encodings.LinearLinkageEncoding11570-12508
      /branches/HeuristicLab.Problems.DataAnalysis.Trading/HeuristicLab.Encodings.LinearLinkageEncoding6123-9799
      /branches/HeuristicLab.Problems.Orienteering/HeuristicLab.Encodings.LinearLinkageEncoding11130-12721
      /branches/HiveStatistics/sources/HeuristicLab.Encodings.LinearLinkageEncoding12440-12877
      /branches/LogResidualEvaluator/HeuristicLab.Encodings.LinearLinkageEncoding10202-10483
      /branches/NET40/sources/HeuristicLab.Encodings.LinearLinkageEncoding5138-5162
      /branches/NSGA-II Changes/HeuristicLab.Encodings.LinearLinkageEncoding12033-12122
      /branches/ParallelEngine/HeuristicLab.Encodings.LinearLinkageEncoding5175-5192
      /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Encodings.LinearLinkageEncoding7568-7810
      /branches/QAPAlgorithms/HeuristicLab.Encodings.LinearLinkageEncoding6350-6627
      /branches/Restructure trunk solution/HeuristicLab.Encodings.LinearLinkageEncoding6828
      /branches/RuntimeOptimizer/HeuristicLab.Encodings.LinearLinkageEncoding8943-9078
      /branches/ScatterSearch (trunk integration)/HeuristicLab.Encodings.LinearLinkageEncoding7787-8333
      /branches/SlaveShutdown/HeuristicLab.Encodings.LinearLinkageEncoding8944-8956
      /branches/SpectralKernelForGaussianProcesses/HeuristicLab.Encodings.LinearLinkageEncoding10204-10479
      /branches/SuccessProgressAnalysis/HeuristicLab.Encodings.LinearLinkageEncoding5370-5682
      /branches/Trunk/HeuristicLab.Encodings.LinearLinkageEncoding6829-6865
      /branches/UnloadJobs/HeuristicLab.Encodings.LinearLinkageEncoding9168-9215
      /branches/VNS/HeuristicLab.Encodings.LinearLinkageEncoding5594-5752
      /branches/histogram/HeuristicLab.Encodings.LinearLinkageEncoding5959-6341
  • branches/MemPRAlgorithm/HeuristicLab.Encodings.LinearLinkageEncoding/3.3/Crossovers/GroupCrossover.cs

    r14185 r14487  
    3939      return new GroupCrossover(this, cloner);
    4040    }
    41 
     41   
    4242    public static LinearLinkage Apply(IRandom random, LinearLinkage p1, LinearLinkage p2) {
    4343      var length = p1.Length;
    44       var child = new LinearLinkage(length);
    45       var endNodes = new HashSet<int>();
    46       for (var i = 0; i < length; i++) {
    47         if ((p1[i] == i && p2[i] == i)
    48           || ((p1[i] == i || p2[i] == i) && random.NextDouble() < 0.5)) {
    49           child[i] = i;
    50           endNodes.Add(i);
     44      var lleeP1 = p1.ToEndLinks();
     45      var lleeP2 = p2.ToEndLinks();
     46      var lleeChild = new int[length];
     47      var isTransfered = new bool[length];
     48
     49      for (var i = p1.Length - 1; i >= 0; i--) {
     50        lleeChild[i] = i;
     51
     52        // Step 1
     53        var isEndP1 = p1[i] == i;
     54        var isEndP2 = p2[i] == i;
     55        if (isEndP1 & isEndP2 || (isEndP1 | isEndP2 && random.NextDouble() < 0.5)) {
     56          isTransfered[i] = true;
     57          continue;
     58        }
     59
     60        // Step 2
     61        var end1 = lleeP1[i];
     62        var end2 = lleeP2[i];
     63
     64        if (isTransfered[end1] & isTransfered[end2]) {
     65          var end = random.NextDouble() < 0.5 ? end1 : end2;
     66          lleeChild[i] = end;
     67        } else if (isTransfered[end1]) {
     68          lleeChild[i] = end1;
     69        } else if (isTransfered[end2]) {
     70          lleeChild[i] = end2;
     71        } else {
     72          var next = random.NextDouble() < 0.5 ? p1[i] : p2[i];
     73          var end = lleeChild[next];
     74          lleeChild[i] = end;
    5175        }
    5276      }
    53       for (var i = 0; i < length; i++) {
    54         if (endNodes.Contains(i)) continue;
    55         var p1End = endNodes.Contains(p1[i]);
    56         var p2End = endNodes.Contains(p2[i]);
    57         if ((p1End && p2End) || (!p1End && !p2End)) {
    58           child[i] = random.NextDouble() < 0.5 ? p1[i] : p2[i];
    59         } else if (p1End) {
    60           child[i] = p1[i];
    61         } else {
    62           child[i] = p2[i];
    63         }
    64       }
    65       child.LinearizeTreeStructures();
    66       return child;
     77      return LinearLinkage.FromEndLinks(lleeChild);
    6778    }
    6879
Note: See TracChangeset for help on using the changeset viewer.