Changeset 7303 for branches/gp-crossover/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Crossovers/SymbolicDataAnalysisExpressionDepthConstrainedCrossover.cs
- Timestamp:
- 01/10/12 15:23:39 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/gp-crossover/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Crossovers/SymbolicDataAnalysisExpressionDepthConstrainedCrossover.cs
r7193 r7303 60 60 DepthRangeParameter.ValidValues.Add(new StringValue(Enum.GetName(typeof(Ranges), Ranges.Standard))); 61 61 DepthRangeParameter.ValidValues.Add(new StringValue(Enum.GetName(typeof(Ranges), Ranges.Lowlevel))); 62 Name = "DepthConstrainedCrossover"; 62 63 } 63 64 public override IDeepCloneable Clone(Cloner cloner) { return new SymbolicDataAnalysisExpressionDepthConstrainedCrossover<T>(this, cloner); } … … 88 89 int depth = parent0.Root.GetDepth(); 89 90 var depthRange = new DoubleRange(); 91 const int depthOffset = 2; // skip the first 2 levels (root + startNode) 90 92 switch ((int)Enum.Parse(typeof(Ranges), mode)) { 91 93 case (int)Ranges.HighLevel: 92 depthRange.Start = 0;93 depthRange.End = Math.Round(depth * 0.25);94 depthRange.Start = depthOffset; // skip the first 2 levels (root + startNode) 95 depthRange.End = depthRange.Start + Math.Round(depth * 0.25); 94 96 break; 95 97 case (int)Ranges.Standard: 96 depthRange.Start = Math.Round(depth * 0.25);97 depthRange.End = Math.Round(depth * 0.75);98 depthRange.Start = depthOffset + Math.Round(depth * 0.25); 99 depthRange.End = depthRange.Start + Math.Round(depth * 0.5); 98 100 break; 99 101 case (int)Ranges.Lowlevel: 100 depthRange.Start = Math.Round(depth * 0.75);101 depthRange.End = depth;102 depthRange.Start = depthOffset + Math.Round(depth * 0.75); 103 depthRange.End = Math.Max(depthRange.Start, depth); 102 104 break; 103 105 } … … 110 112 select new CutPoint(n, s)); 111 113 }); 114 115 if (crossoverPoints0.Count == 0) 116 throw new Exception("No crossover points available in the first parent"); 117 112 118 CutPoint crossoverPoint0 = crossoverPoints0.SelectRandom(random); 113 119 int level = parent0.Root.GetBranchLevel(crossoverPoint0.Child);
Note: See TracChangeset
for help on using the changeset viewer.