Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
09/28/21 13:37:43 (3 years ago)
Author:
pfleck
Message:

#3040 Added a subvector symbol with ranges as subtrees.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/3040_VectorBasedGP/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Converters/VectorTreeSimplifier.cs

    r17629 r18060  
    6666    private static readonly StandardDeviation standardDeviationSymbol = new StandardDeviation();
    6767    private static readonly Variance varianceSymbol = new Variance();
     68    private static readonly Min minSymbol = new Min();
     69    private static readonly Max maxSymbol = new Max();
    6870
    6971    private readonly SymbolicDataAnalysisExpressionTreeVectorInterpreter interpreter;
     
    281283    private static bool IsVariance(ISymbolicExpressionTreeNode node) {
    282284      return node.Symbol is Variance;
     285    }
     286
     287    private static bool IsMin(ISymbolicExpressionTreeNode node) {
     288      return node.Symbol is Min;
     289    }
     290
     291    private static bool IsMax(ISymbolicExpressionTreeNode node) {
     292      return node.Symbol is Max;
    283293    }
    284294    #endregion
     
    363373      } else if (IsVariance(original)) {
    364374        return SimplifyVarianceAggregation(original);
     375      } else if (IsMin(original)) {
     376        return SimplifyMinAggregation(original);
     377      } else if (IsMax(original)) {
     378        return SimplifyMaxAggregation(original);
    365379      } else {
    366380        return SimplifyAny(original);
     
    574588    private ISymbolicExpressionTreeNode SimplifyVarianceAggregation(ISymbolicExpressionTreeNode original) {
    575589      return MakeVarianceAggregation(GetSimplifiedTree(original.GetSubtree(0)));
     590    }
     591
     592    private ISymbolicExpressionTreeNode SimplifyMinAggregation(ISymbolicExpressionTreeNode original) {
     593      return MakeMinAggregation(GetSimplifiedTree(original.GetSubtree(0)));
     594    }
     595
     596    private ISymbolicExpressionTreeNode SimplifyMaxAggregation(ISymbolicExpressionTreeNode original) {
     597      return MakeMaxAggregation(GetSimplifiedTree(original.GetSubtree(0)));
    576598    }
    577599    #endregion
     
    15081530        });
    15091531    }
     1532
     1533    private ISymbolicExpressionTreeNode MakeMinAggregation(ISymbolicExpressionTreeNode node) {
     1534      return MakeAggregation(node, meanSymbol,
     1535        simplifyScalar: n => n,
     1536        simplifyAdditiveTerms: (vectorNode, scalarNode) => {
     1537          var minNode = MakeMinAggregation(vectorNode);
     1538          return MakeSum(scalarNode, minNode);
     1539        },
     1540        simplifyMultiplicativeFactors: (vectorNode, scalarNode) => {
     1541          var minNode = MakeMinAggregation(vectorNode);
     1542          return MakeProduct(scalarNode, minNode);
     1543        });
     1544    }
     1545
     1546    private ISymbolicExpressionTreeNode MakeMaxAggregation(ISymbolicExpressionTreeNode node) {
     1547      return MakeAggregation(node, meanSymbol,
     1548        simplifyScalar: n => n,
     1549        simplifyAdditiveTerms: (vectorNode, scalarNode) => {
     1550          var maxNode = MakeMaxAggregation(vectorNode);
     1551          return MakeSum(scalarNode, maxNode);
     1552        },
     1553        simplifyMultiplicativeFactors: (vectorNode, scalarNode) => {
     1554          var maxNode = MakeMaxAggregation(vectorNode);
     1555          return MakeProduct(scalarNode, maxNode);
     1556        });
     1557    }
    15101558    #endregion
    15111559
Note: See TracChangeset for help on using the changeset viewer.