Changeset 14487 for branches/MemPRAlgorithm/HeuristicLab.Encodings.LinearLinkageEncoding/3.3/Crossovers/GroupCrossover.cs
- Timestamp:
- 12/14/16 10:16:50 (7 years ago)
- 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.LinearLinkageEncoding merged eligible /stable/HeuristicLab.Encodings.LinearLinkageEncoding merged eligible /trunk/sources/HeuristicLab.Encodings.LinearLinkageEncoding merged eligible /branches/1721-RandomForestPersistence/HeuristicLab.Encodings.LinearLinkageEncoding 10321-10322 /branches/Algorithms.GradientDescent/HeuristicLab.Encodings.LinearLinkageEncoding 5516-5520 /branches/Benchmarking/sources/HeuristicLab.Encodings.LinearLinkageEncoding 6917-7005 /branches/CloningRefactoring/HeuristicLab.Encodings.LinearLinkageEncoding 4656-4721 /branches/CodeEditor/HeuristicLab.Encodings.LinearLinkageEncoding 11700-11806 /branches/DataAnalysis Refactoring/HeuristicLab.Encodings.LinearLinkageEncoding 5471-5808 /branches/DataAnalysis SolutionEnsembles/HeuristicLab.Encodings.LinearLinkageEncoding 5815-6180 /branches/DataAnalysis/HeuristicLab.Encodings.LinearLinkageEncoding 4458-4459,4462,4464 /branches/DataPreprocessing/HeuristicLab.Encodings.LinearLinkageEncoding 10085-11101 /branches/GP.Grammar.Editor/HeuristicLab.Encodings.LinearLinkageEncoding 6284-6795 /branches/GP.Symbols (TimeLag, Diff, Integral)/HeuristicLab.Encodings.LinearLinkageEncoding 5060 /branches/HLScript/HeuristicLab.Encodings.LinearLinkageEncoding 10331-10358 /branches/HeuristicLab.DatasetRefactor/sources/HeuristicLab.Encodings.LinearLinkageEncoding 11570-12508 /branches/HeuristicLab.Problems.DataAnalysis.Trading/HeuristicLab.Encodings.LinearLinkageEncoding 6123-9799 /branches/HeuristicLab.Problems.Orienteering/HeuristicLab.Encodings.LinearLinkageEncoding 11130-12721 /branches/HiveStatistics/sources/HeuristicLab.Encodings.LinearLinkageEncoding 12440-12877 /branches/LogResidualEvaluator/HeuristicLab.Encodings.LinearLinkageEncoding 10202-10483 /branches/NET40/sources/HeuristicLab.Encodings.LinearLinkageEncoding 5138-5162 /branches/NSGA-II Changes/HeuristicLab.Encodings.LinearLinkageEncoding 12033-12122 /branches/ParallelEngine/HeuristicLab.Encodings.LinearLinkageEncoding 5175-5192 /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Encodings.LinearLinkageEncoding 7568-7810 /branches/QAPAlgorithms/HeuristicLab.Encodings.LinearLinkageEncoding 6350-6627 /branches/Restructure trunk solution/HeuristicLab.Encodings.LinearLinkageEncoding 6828 /branches/RuntimeOptimizer/HeuristicLab.Encodings.LinearLinkageEncoding 8943-9078 /branches/ScatterSearch (trunk integration)/HeuristicLab.Encodings.LinearLinkageEncoding 7787-8333 /branches/SlaveShutdown/HeuristicLab.Encodings.LinearLinkageEncoding 8944-8956 /branches/SpectralKernelForGaussianProcesses/HeuristicLab.Encodings.LinearLinkageEncoding 10204-10479 /branches/SuccessProgressAnalysis/HeuristicLab.Encodings.LinearLinkageEncoding 5370-5682 /branches/Trunk/HeuristicLab.Encodings.LinearLinkageEncoding 6829-6865 /branches/UnloadJobs/HeuristicLab.Encodings.LinearLinkageEncoding 9168-9215 /branches/VNS/HeuristicLab.Encodings.LinearLinkageEncoding 5594-5752 /branches/histogram/HeuristicLab.Encodings.LinearLinkageEncoding 5959-6341
-
Property
svn:mergeinfo
set to
(toggle deleted branches)
-
branches/MemPRAlgorithm/HeuristicLab.Encodings.LinearLinkageEncoding/3.3/Crossovers/GroupCrossover.cs
r14185 r14487 39 39 return new GroupCrossover(this, cloner); 40 40 } 41 41 42 42 public static LinearLinkage Apply(IRandom random, LinearLinkage p1, LinearLinkage p2) { 43 43 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; 51 75 } 52 76 } 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); 67 78 } 68 79
Note: See TracChangeset
for help on using the changeset viewer.