Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/21/10 15:21:34 (14 years ago)
Author:
gkronber
Message:

Refactored symbolic expression tree encoding and problem classes for symbolic regression. #937 , #938

File:
1 edited

Legend:

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

    r3452 r3462  
    3434using HeuristicLab.Problems.DataAnalysis;
    3535using HeuristicLab.Operators;
     36using HeuristicLab.Problems.DataAnalysis.Symbolic;
    3637
    3738namespace HeuristicLab.Problems.DataAnalysis.Regression.Symbolic {
     
    4041  public abstract class SymbolicRegressionEvaluator : SingleSuccessorOperator, ISymbolicRegressionEvaluator {
    4142    private const string QualityParameterName = "Quality";
     43    private const string SymbolicExpressionTreeInterpreterParameterName = "SymbolicExpressionTreeInterpreter";
    4244    private const string FunctionTreeParameterName = "FunctionTree";
    4345    private const string RegressionProblemDataParameterName = "RegressionProblemData";
     
    4951    public ILookupParameter<DoubleValue> QualityParameter {
    5052      get { return (ILookupParameter<DoubleValue>)Parameters[QualityParameterName]; }
     53    }
     54
     55    public ILookupParameter<ISymbolicExpressionTreeInterpreter> SymbolicExpressionTreeInterpreterParameter {
     56      get { return (ILookupParameter<ISymbolicExpressionTreeInterpreter>)Parameters[SymbolicExpressionTreeInterpreterParameterName]; }
    5157    }
    5258
     
    7278    #endregion
    7379    #region properties
     80    public ISymbolicExpressionTreeInterpreter SymbolicExpressionTreeInterpreter {
     81      get { return SymbolicExpressionTreeInterpreterParameter.ActualValue; }
     82    }
    7483    public SymbolicExpressionTree SymbolicExpressionTree {
    7584      get { return SymbolicExpressionTreeParameter.ActualValue; }
     
    8998      : base() {
    9099      Parameters.Add(new LookupParameter<DoubleValue>(QualityParameterName, "The quality of the evaluated symbolic regression solution."));
     100      Parameters.Add(new LookupParameter<ISymbolicExpressionTreeInterpreter>(SymbolicExpressionTreeInterpreterParameterName, "The interpreter that should be used to calculate the output values of the symbolic expression tree."));
    91101      Parameters.Add(new LookupParameter<SymbolicExpressionTree>(FunctionTreeParameterName, "The symbolic regression solution encoded as a symbolic expression tree."));
    92102      Parameters.Add(new LookupParameter<DataAnalysisProblemData>(RegressionProblemDataParameterName, "The problem data on which the symbolic regression solution should be evaluated."));
     
    98108    public override IOperation Apply() {
    99109      DoubleValue numberOfEvaluatedNodes = NumberOfEvaluatedNodesParameter.ActualValue;
    100       QualityParameter.ActualValue = new DoubleValue(Evaluate(SymbolicExpressionTree, RegressionProblemData.Dataset,
     110      QualityParameter.ActualValue = new DoubleValue(Evaluate(SymbolicExpressionTreeInterpreter, SymbolicExpressionTree, RegressionProblemData.Dataset,
    101111        RegressionProblemData.TargetVariable, SamplesStart, SamplesEnd, numberOfEvaluatedNodes));
    102112      return null;
    103113    }
    104114
    105     protected abstract double Evaluate(SymbolicExpressionTree solution, Dataset dataset, StringValue targetVariable, IntValue samplesStart, IntValue samplesEnd, DoubleValue numberOfEvaluatedNodes);
     115    protected abstract double Evaluate(ISymbolicExpressionTreeInterpreter interpreter,
     116      SymbolicExpressionTree solution,
     117      Dataset dataset,
     118      StringValue targetVariable,
     119      IntValue samplesStart, IntValue samplesEnd,
     120      DoubleValue numberOfEvaluatedNodes);
    106121  }
    107122}
Note: See TracChangeset for help on using the changeset viewer.