Changeset 12288 for branches/LinearLinkage/HeuristicLab.Encodings.LinearLinkageEncoding/3.3/Crossovers/GroupCrossover.cs
- Timestamp:
- 04/06/15 22:41:24 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/LinearLinkage/HeuristicLab.Encodings.LinearLinkageEncoding/3.3/Crossovers/GroupCrossover.cs
r12285 r12288 22 22 using System; 23 23 using System.Collections.Generic; 24 using System.Linq; 24 25 using HeuristicLab.Common; 25 26 using HeuristicLab.Core; … … 53 54 for (var i = 0; i < length; i++) { 54 55 if (endNodes.Contains(i)) continue; 55 if (endNodes.Contains(p1[i]) && endNodes.Contains(p2[i])) { 56 var p1End = endNodes.Contains(p1[i]); 57 var p2End = endNodes.Contains(p2[i]); 58 if ((p1End && p2End) || (!p1End && !p2End)) { 56 59 child[i] = random.NextDouble() < 0.5 ? p1[i] : p2[i]; 57 } else if ( endNodes.Contains(p1[i])) {60 } else if (p1End) { 58 61 child[i] = p1[i]; 59 } else if (endNodes.Contains(p2[i])){62 } else { 60 63 child[i] = p2[i]; 61 } else {62 var a = p1[i];63 var b = p2[i];64 while (true) {65 if (endNodes.Contains(p2[a])) {66 child[i] = p2[a];67 break;68 }69 if (endNodes.Contains(p1[b])) {70 child[i] = p1[b];71 break;72 }73 var tmp = b;74 b = p2[a];75 a = p1[tmp];76 }77 64 } 78 65 } 66 child.LinearizeTreeStructures(); 79 67 return child; 80 68 }
Note: See TracChangeset
for help on using the changeset viewer.