Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/04/12 16:23:35 (12 years ago)
Author:
gkronber
Message:

#1847: bug fixes and improvements discussed with andreas

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/GP-MoveOperators/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/ReplaceBranchMoveEvaluator.cs

    r8207 r8214  
    2020#endregion
    2121
     22using System;
    2223using System.Linq;
    2324using HeuristicLab.Common;
     
    8687      OnlineLinearScalingParameterCalculator.Calculate(move.NewOutput, move.OriginalOutput, out alpha, out beta, out errorState);
    8788
     89      // prevent scaling to a constant value
     90      if (beta.IsAlmost(0.0)) beta = 10E-5;
     91
    8892      move.Alpha = alpha;
    8993      move.Beta = beta;
    9094
    91       // clone tree and parent
    92       var cloner = new Cloner();
    93       var clonedTree = cloner.Clone(move.Tree);
    94       var clonedParent = cloner.Clone(move.Parent);
    95       var clonedBranch = cloner.Clone(move.NewBranch);
    96 
    97       clonedParent.RemoveSubtree(move.SubtreeIndex);
    98       clonedParent.InsertSubtree(move.SubtreeIndex, Scale(clonedBranch, alpha, beta));
     95      var oldBranch = move.Parent.GetSubtree(move.SubtreeIndex);
     96      move.Parent.RemoveSubtree(move.SubtreeIndex);
     97      move.Parent.InsertSubtree(move.SubtreeIndex, Scale(move.NewBranch, alpha, beta));
    9998
    10099      var problemData = ProblemDataParameter.ActualValue;
     
    103102      var fitnessPartition = FitnessCalculationPartitionParameter.ActualValue;
    104103      var rows = Enumerable.Range(fitnessPartition.Start, fitnessPartition.End - fitnessPartition.Start);
    105       var quality = evaluator.Evaluate(childContext, clonedTree, problemData, rows);
     104      var quality = evaluator.Evaluate(childContext, move.Tree, problemData, rows);
     105
     106      // revert changes to tree
     107      move.Parent.RemoveSubtree(move.SubtreeIndex);
     108      move.Parent.InsertSubtree(move.SubtreeIndex, oldBranch);
    106109
    107110      MoveQualityParameter.ActualValue = new DoubleValue(quality);
Note: See TracChangeset for help on using the changeset viewer.