Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
08/05/16 17:34:16 (8 years ago)
Author:
gkronber
Message:

#2650:

  • added weight for FactorVariable (necessary for LR)
  • introduced VariableBase and VariableTreeNodeBase and IVariableSymbol
  • support for factors in LR
  • extended variable impacts in solution view
  • fixed ERC view for regression
  • support for FactorVariable in simplifier
  • improved support for FactorVariable in constants optimizer
  • multiple related changes and small fixes
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Analyzers/SymbolicDataAnalysisVariableFrequencyAnalyzer.cs

    r14232 r14238  
    167167      if (aggregateLaggedVariables) {
    168168        tree.Root.ForEachNodePrefix(node => {
    169           if (node.Symbol is Variable) {
    170             var varNode = node as VariableTreeNode;
    171             IncReferenceCount(references, varNode.VariableName);
    172           } else if (node.Symbol is VariableCondition) {
    173             var varCondNode = node as VariableConditionTreeNode;
    174             IncReferenceCount(references, varCondNode.VariableName);
    175           } else if (node.Symbol is FactorVariable) {
     169          if (node is IVariableTreeNode) {
    176170            var factorNode = node as FactorVariableTreeNode;
    177             if (aggregateFactorVariables) {
    178               IncReferenceCount(references, factorNode.VariableName);
     171            if (factorNode != null && !aggregateFactorVariables) {
     172              IncReferenceCount(references, factorNode.VariableName + "=" + factorNode.VariableValue);
    179173            } else {
    180               IncReferenceCount(references, factorNode.ToString());
     174              var varNode = node as IVariableTreeNode;
     175              IncReferenceCount(references, varNode.VariableName);
    181176            }
    182177          }
     
    189184
    190185    private static void GetVariableReferences(Dictionary<string, int> references, ISymbolicExpressionTreeNode node, int currentLag, bool aggregateFactorVariables) {
    191       if (node.Symbol is LaggedVariable) {
    192         var laggedVarNode = node as LaggedVariableTreeNode;
    193         IncReferenceCount(references, laggedVarNode.VariableName, currentLag + laggedVarNode.Lag);
    194       } else if (node.Symbol is Variable) {
    195         var varNode = node as VariableTreeNode;
    196         IncReferenceCount(references, varNode.VariableName, currentLag);
    197       } else if (node.Symbol is FactorVariable) {
    198         var factorNode = node as FactorVariableTreeNode;
    199         if (aggregateFactorVariables) {
    200           IncReferenceCount(references, factorNode.VariableName, currentLag);
     186      if (node is IVariableTreeNode) {
     187        var laggedVarTreeNode = node as LaggedVariableTreeNode;
     188        var factorVarTreeNode = node as FactorVariableTreeNode;
     189        var varConditionTreeNode = node as VariableConditionTreeNode;
     190        if (laggedVarTreeNode != null) {
     191          IncReferenceCount(references, laggedVarTreeNode.VariableName, currentLag + laggedVarTreeNode.Lag);
     192        } else if (factorVarTreeNode != null) {
     193          if (aggregateFactorVariables) {
     194            IncReferenceCount(references, factorVarTreeNode.VariableName, currentLag);
     195          } else {
     196            IncReferenceCount(references, factorVarTreeNode.VariableName + "=" + factorVarTreeNode.VariableValue, currentLag);
     197          }
     198        } else if (varConditionTreeNode != null) {
     199          IncReferenceCount(references, varConditionTreeNode.VariableName, currentLag);
     200          GetVariableReferences(references, node.GetSubtree(0), currentLag, aggregateFactorVariables);
     201          GetVariableReferences(references, node.GetSubtree(1), currentLag, aggregateFactorVariables);
    201202        } else {
    202           IncReferenceCount(references, factorNode.ToString(), currentLag);
    203         }
    204       } else if (node.Symbol is VariableCondition) {
    205         var varCondNode = node as VariableConditionTreeNode;
    206         IncReferenceCount(references, varCondNode.VariableName, currentLag);
    207         GetVariableReferences(references, node.GetSubtree(0), currentLag, aggregateFactorVariables);
    208         GetVariableReferences(references, node.GetSubtree(1), currentLag, aggregateFactorVariables);
     203          var varNode = node as IVariableTreeNode;
     204          IncReferenceCount(references, varNode.VariableName, currentLag);
     205        }
    209206      } else if (node.Symbol is Integral) {
    210207        var laggedNode = node as LaggedTreeNode;
Note: See TracChangeset for help on using the changeset viewer.