Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
12/15/21 11:50:57 (2 years ago)
Author:
gkronber
Message:

#3140: merged r18091:18131 from branch to trunk

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/HeuristicLab.Problems.DataAnalysis.Symbolic

  • trunk/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SymbolicDataAnalysisExpressionPruningOperator.cs

    r17180 r18132  
    3333namespace HeuristicLab.Problems.DataAnalysis.Symbolic {
    3434  [StorableType("DBE27385-2E8C-4314-88B4-F96A5240FC9D")]
    35   [Item("SymbolicExpressionTreePruningOperator", "An operator that replaces introns with constant values in a symbolic expression tree.")]
     35  [Item("SymbolicExpressionTreePruningOperator", "An operator that replaces sub-trees with small impacts with numbers in a symbolic expression tree.")]
    3636  public abstract class SymbolicDataAnalysisExpressionPruningOperator : SingleSuccessorOperator, ISymbolicExpressionTreeOperator {
    3737    #region parameter names
     
    172172      for (int i = 0; i < nodes.Count; ++i) {
    173173        var node = nodes[i];
    174         if (node is ConstantTreeNode) continue;
    175 
    176         double impactValue, replacementValue;
    177         double newQualityForImpacts;
    178         ImpactValuesCalculator.CalculateImpactAndReplacementValues(model, node, problemData, rows, out impactValue, out replacementValue, out newQualityForImpacts, qualityForImpactsCalculation);
     174        if (node is INumericTreeNode) continue;
     175
     176        ImpactValuesCalculator.CalculateImpactAndReplacementValues(model, node, problemData, rows,
     177          out double impactValue, out double replacementValue, out double newQualityForImpacts, qualityForImpactsCalculation);
    179178
    180179        if (PruneOnlyZeroImpactNodes && !impactValue.IsAlmost(0.0)) continue;
    181180        if (!PruneOnlyZeroImpactNodes && impactValue > NodeImpactThreshold) continue;
    182181
    183         var constantNode = (ConstantTreeNode)node.Grammar.GetSymbol("Constant").CreateTreeNode();
    184         constantNode.Value = replacementValue;
     182        var numberNode = (NumberTreeNode)node.Grammar.GetSymbol("Number").CreateTreeNode();
     183        numberNode.Value = replacementValue;
    185184
    186185        var length = node.GetLength();
    187         ReplaceWithConstant(node, constantNode);
     186        ReplaceWithNumber(node, numberNode);
    188187        i += length - 1; // skip subtrees under the node that was folded
    189188
     
    205204    }
    206205
    207     protected static void ReplaceWithConstant(ISymbolicExpressionTreeNode original, ISymbolicExpressionTreeNode replacement) {
     206    protected static void ReplaceWithNumber(ISymbolicExpressionTreeNode original, ISymbolicExpressionTreeNode replacement) {
    208207      var parent = original.Parent;
    209208      var i = parent.IndexOfSubtree(original);
Note: See TracChangeset for help on using the changeset viewer.