Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/18/17 14:22:46 (7 years ago)
Author:
gkronber
Message:

#2650 adapted formatters to handle factor symbols

File:
1 edited

Legend:

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

    r14185 r14764  
    4848      ISymbol symbol = node.Symbol;
    4949
    50       if (symbol is ProgramRootSymbol || symbol is StartSymbol)
     50      if(symbol is ProgramRootSymbol || symbol is StartSymbol)
    5151        return FormatRecursively(node.GetSubtree(0));
    5252
     
    5555      stringBuilder.Append("(");
    5656
    57       if (symbol is Addition) {
    58         for (int i = 0; i < node.SubtreeCount; i++) {
    59           if (i > 0) stringBuilder.Append("+");
     57      if(symbol is Addition) {
     58        for(int i = 0; i < node.SubtreeCount; i++) {
     59          if(i > 0) stringBuilder.Append("+");
    6060          stringBuilder.Append(FormatRecursively(node.GetSubtree(i)));
    6161        }
    62       } else if (symbol is And) {
     62      } else if(symbol is And) {
    6363        stringBuilder.Append("(");
    64         for (int i = 0; i < node.SubtreeCount; i++) {
    65           if (i > 0) stringBuilder.Append("&");
     64        for(int i = 0; i < node.SubtreeCount; i++) {
     65          if(i > 0) stringBuilder.Append("&");
    6666          stringBuilder.Append("(");
    6767          stringBuilder.Append(FormatRecursively(node.GetSubtree(i)));
     
    6969        }
    7070        stringBuilder.Append(") ifTrue:[1] ifFalse:[-1]");
    71       } else if (symbol is Average) {
     71      } else if(symbol is Average) {
    7272        stringBuilder.Append("(1/");
    7373        stringBuilder.Append(node.SubtreeCount);
    7474        stringBuilder.Append(")*(");
    75         for (int i = 0; i < node.SubtreeCount; i++) {
    76           if (i > 0) stringBuilder.Append("+");
     75        for(int i = 0; i < node.SubtreeCount; i++) {
     76          if(i > 0) stringBuilder.Append("+");
    7777          stringBuilder.Append(FormatRecursively(node.GetSubtree(i)));
    7878        }
    7979        stringBuilder.Append(")");
    80       } else if (symbol is Constant) {
     80      } else if(symbol is Constant) {
    8181        ConstantTreeNode constantTreeNode = node as ConstantTreeNode;
    8282        stringBuilder.Append(constantTreeNode.Value.ToString(CultureInfo.InvariantCulture));
    83       } else if (symbol is Cosine) {
     83      } else if(symbol is Cosine) {
    8484        stringBuilder.Append(FormatRecursively(node.GetSubtree(0)));
    8585        stringBuilder.Append(" cos");
    86       } else if (symbol is Division) {
    87         if (node.SubtreeCount == 1) {
     86      } else if(symbol is Division) {
     87        if(node.SubtreeCount == 1) {
    8888          stringBuilder.Append("1/");
    8989          stringBuilder.Append(FormatRecursively(node.GetSubtree(0)));
     
    9191          stringBuilder.Append(FormatRecursively(node.GetSubtree(0)));
    9292          stringBuilder.Append("/(");
    93           for (int i = 1; i < node.SubtreeCount; i++) {
    94             if (i > 1) stringBuilder.Append("*");
     93          for(int i = 1; i < node.SubtreeCount; i++) {
     94            if(i > 1) stringBuilder.Append("*");
    9595            stringBuilder.Append(FormatRecursively(node.GetSubtree(i)));
    9696          }
    9797          stringBuilder.Append(")");
    9898        }
    99       } else if (symbol is Exponential) {
     99      } else if(symbol is Exponential) {
    100100        stringBuilder.Append(FormatRecursively(node.GetSubtree(0)));
    101101        stringBuilder.Append(" exp");
    102       } else if (symbol is GreaterThan) {
     102      } else if(symbol is GreaterThan) {
    103103        stringBuilder.Append("(");
    104104        stringBuilder.Append(FormatRecursively(node.GetSubtree(0)));
     
    106106        stringBuilder.Append(FormatRecursively(node.GetSubtree(1)));
    107107        stringBuilder.Append(") ifTrue: [1] ifFalse: [-1]");
    108       } else if (symbol is IfThenElse) {
     108      } else if(symbol is IfThenElse) {
    109109        stringBuilder.Append("(");
    110110        stringBuilder.Append(FormatRecursively(node.GetSubtree(0)));
     
    114114        stringBuilder.Append(FormatRecursively(node.GetSubtree(2)));
    115115        stringBuilder.Append("]");
    116       } else if (symbol is LaggedVariable) {
    117         stringBuilder.Append("lagged variable not implemented");
    118       } else if (symbol is LessThan) {
     116      } else if(symbol is LaggedVariable) {
     117        stringBuilder.Append("lagged variables are not supported");
     118      } else if(symbol is LessThan) {
    119119        stringBuilder.Append("(");
    120120        stringBuilder.Append(FormatRecursively(node.GetSubtree(0)));
     
    122122        stringBuilder.Append(FormatRecursively(node.GetSubtree(1)));
    123123        stringBuilder.Append(") ifTrue: [1] ifFalse: [-1]");
    124       } else if (symbol is Logarithm) {
     124      } else if(symbol is Logarithm) {
    125125        stringBuilder.Append(FormatRecursively(node.GetSubtree(0)));
    126126        stringBuilder.Append("ln");
    127       } else if (symbol is Multiplication) {
    128         for (int i = 0; i < node.SubtreeCount; i++) {
    129           if (i > 0) stringBuilder.Append("*");
     127      } else if(symbol is Multiplication) {
     128        for(int i = 0; i < node.SubtreeCount; i++) {
     129          if(i > 0) stringBuilder.Append("*");
    130130          stringBuilder.Append(FormatRecursively(node.GetSubtree(i)));
    131131        }
    132       } else if (symbol is Not) {
     132      } else if(symbol is Not) {
    133133        stringBuilder.Append("(");
    134134        stringBuilder.Append(FormatRecursively(node.GetSubtree(0)));
    135135        stringBuilder.Append(">0) ifTrue: [-1] ifFalse: [1.0]");
    136       } else if (symbol is Or) {
     136      } else if(symbol is Or) {
    137137        stringBuilder.Append("(");
    138         for (int i = 0; i < node.SubtreeCount; i++) {
    139           if (i > 0) stringBuilder.Append("|");
     138        for(int i = 0; i < node.SubtreeCount; i++) {
     139          if(i > 0) stringBuilder.Append("|");
    140140          stringBuilder.Append("(");
    141141          stringBuilder.Append(FormatRecursively(node.GetSubtree(i)));
     
    143143        }
    144144        stringBuilder.Append(") ifTrue:[1] ifFalse:[-1]");
    145       } else if (symbol is Sine) {
     145      } else if(symbol is Sine) {
    146146        stringBuilder.Append(FormatRecursively(node.GetSubtree(0)));
    147147        stringBuilder.Append(" sin");
    148       } else if (symbol is Subtraction) {
    149         if (node.SubtreeCount == 1) {
     148      } else if(symbol is Subtraction) {
     149        if(node.SubtreeCount == 1) {
    150150          stringBuilder.Append("-1*");
    151151          stringBuilder.Append(FormatRecursively(node.GetSubtree(0)));
    152152        } else {
    153153          stringBuilder.Append(FormatRecursively(node.GetSubtree(0)));
    154           for (int i = 1; i < node.SubtreeCount; i++) {
     154          for(int i = 1; i < node.SubtreeCount; i++) {
    155155            stringBuilder.Append(" - ");
    156156            stringBuilder.Append(FormatRecursively(node.GetSubtree(i)));
    157157          }
    158158        }
    159       } else if (symbol is Tangent) {
     159      } else if(symbol is Tangent) {
    160160        stringBuilder.Append(FormatRecursively(node.GetSubtree(0)));
    161161        stringBuilder.Append(" tan");
    162       } else if (symbol is Variable) {
     162      } else if(symbol is Variable) {
    163163        VariableTreeNode variableTreeNode = node as VariableTreeNode;
    164164        stringBuilder.Append(variableTreeNode.Weight.ToString(CultureInfo.InvariantCulture));
    165165        stringBuilder.Append("*");
    166166        stringBuilder.Append(variableTreeNode.VariableName);
     167      } else if(symbol is BinaryFactorVariable || symbol is FactorVariable) {
     168        stringBuilder.Append("factor variables are not supported");
    167169      } else {
    168170        stringBuilder.Append("(");
    169         for (int i = 0; i < node.SubtreeCount; i++) {
    170           if (i > 0) stringBuilder.Append(", ");
     171        for(int i = 0; i < node.SubtreeCount; i++) {
     172          if(i > 0) stringBuilder.Append(", ");
    171173          stringBuilder.Append(FormatRecursively(node.GetSubtree(i)));
    172174        }
Note: See TracChangeset for help on using the changeset viewer.