Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/20/10 15:49:22 (14 years ago)
Author:
gkronber
Message:

Implemented views for DataAnalysisProblems and DataAnalysisSolutions. #938 (Data types and operators for regression problems)

Location:
trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/ArithmeticExpressionGrammar.cs

    r3376 r3442  
    3535  public class ArithmeticExpressionGrammar : DefaultSymbolicExpressionGrammar {
    3636    [Storable]
    37     private List<string> variableNames = new List<string>();
    38     public IEnumerable<string> VariableNames {
    39       get { return variableNames; }
    40       set {
    41         variableNames = new List<string>(value);
    42         variableSymbol.VariableNames = variableNames;
    43       }
    44     }
    45 
    46     [Storable]
    4737    private HeuristicLab.Problems.DataAnalysis.Symbolic.Symbols.Variable variableSymbol;
    4838
     
    5848      var div = new Division();
    5949      var constant = new Constant();
     50      constant.MinValue = -20;
     51      constant.MaxValue = 20;
    6052      variableSymbol = new HeuristicLab.Problems.DataAnalysis.Symbolic.Symbols.Variable();
    6153
  • trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/SimpleArithmeticExpressionEvaluator.cs

    r3409 r3442  
    4444        this.row = row;
    4545        pc = 0;
    46         arguments.Clear();
     46        argumentStack.Clear();
    4747        var estimatedValue = Evaluate();
    4848        if (double.IsNaN(estimatedValue) || double.IsInfinity(estimatedValue)) yield return 0.0;
     
    5151    }
    5252
    53     private List<double> arguments = new List<double>();
     53    private Stack<List<double>> argumentStack = new Stack<List<double>>();
    5454    public double Evaluate() {
    5555      var currentInstr = code[pc++];
     
    8585        case CodeSymbol.Call: {
    8686            // save current arguments
    87             var oldArgs = new List<double>(arguments);
    88             arguments.Clear();
     87            List<double> arguments = new List<double>();
    8988            // evaluate sub-trees
    9089            for (int i = 0; i < currentInstr.nArguments; i++) {
    9190              arguments.Add(Evaluate());
    9291            }
     92            argumentStack.Push(arguments);
    9393            // save the pc
    9494            int nextPc = pc;
     
    9797            // evaluate the function
    9898            double v = Evaluate();
     99            argumentStack.Pop();
    99100            // restore the pc => evaluation will continue at point after my subtrees 
    100101            pc = nextPc;
    101             // restore arguments
    102             arguments = oldArgs;
    103102            return v;
    104103          }
    105104        case CodeSymbol.Arg: {
    106             return arguments[currentInstr.iArg0];
     105            return argumentStack.Peek()[currentInstr.iArg0];
    107106          }
    108107        case CodeSymbol.Dynamic: {
  • trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/ConstantTreeNode.cs

    r3376 r3442  
    3434      get { return (Constant)base.Symbol; }
    3535    }
    36     public override bool HasLocalParameters {
    37       get {
    38         return true;
    39       }
    40     }
    4136
    4237    private double constantValue;
     
    5449    public ConstantTreeNode(Constant constantSymbol) : base(constantSymbol) { }
    5550
     51    public override bool HasLocalParameters {
     52      get {
     53        return true;
     54      }
     55    }
    5656    public override void ResetLocalParameters(IRandom random) {
    5757      base.ResetLocalParameters(random);
     
    6363      return new ConstantTreeNode(this);
    6464    }
     65
     66    public override string ToString() {
     67      return constantValue.ToString("E5");
     68    }
    6569  }
    6670}
  • trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/Variable.cs

    r3376 r3442  
    5252    private List<string> variableNames;
    5353    [Storable]
    54     public ICollection<string> VariableNames {
     54    public IEnumerable<string> VariableNames {
    5555      get { return variableNames; }
    5656      set {
  • trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/VariableTreeNode.cs

    r3376 r3442  
    5656    public VariableTreeNode(Variable variableSymbol) : base(variableSymbol) { }
    5757
     58    public override bool HasLocalParameters {
     59      get {
     60        return true;
     61      }
     62    }
     63
    5864    public override void ResetLocalParameters(IRandom random) {
    5965      base.ResetLocalParameters(random);
     
    6874      return new VariableTreeNode(this);
    6975    }
     76
     77    public override string ToString() {
     78      return weight.ToString("E5") + " * " + variableName;
     79    }
    7080  }
    7181}
Note: See TracChangeset for help on using the changeset viewer.