Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/06/10 19:02:45 (14 years ago)
Author:
gkronber
Message:

Adapted analyzers to use ScopeTreeLookupParameter and wire the depth setting correctly for

  • SymbolicExpressionTreeEncoding
  • ArtificialAntProblem
  • SymbolicRegression

#999

File:
1 moved

Legend:

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

    r3665 r3681  
    3636
    3737namespace HeuristicLab.Problems.DataAnalysis.Regression.Symbolic.Analyzers {
    38   [Item("PopulationBestSymbolicRegressionSolutionAnalyzer", "An operator for analyzing the best solution of symbolic regression problems given in symbolic expression tree encoding.")]
     38  [Item("BestSymbolicRegressionSolutionAnalyzer", "An operator for analyzing the best solution of symbolic regression problems given in symbolic expression tree encoding.")]
    3939  [StorableClass]
    40   public sealed class PopulationBestSymbolicRegressionSolutionAnalyzer : SingleSuccessorOperator, ISymbolicRegressionSolutionPopulationAnalyzer {
     40  public sealed class BestSymbolicRegressionSolutionAnalyzer : SingleSuccessorOperator, ISymbolicRegressionAnalyzer {
    4141    private const string SymbolicExpressionTreeParameterName = "SymbolicExpressionTree";
    4242    private const string SymbolicExpressionTreeInterpreterParameterName = "SymbolicExpressionTreeInterpreter";
     
    4949    private const string ResultsParameterName = "Results";
    5050
    51     public ILookupParameter<ItemArray<SymbolicExpressionTree>> SymbolicExpressionTreeParameter {
    52       get { return (ILookupParameter<ItemArray<SymbolicExpressionTree>>)Parameters[SymbolicExpressionTreeParameterName]; }
     51    private const string BestSolutionResultName = "Best Solution (on validiation set)";
     52    private const string BestSolutionInputvariableCountResultName = "Variables Used by Best Solution";
     53
     54    public ScopeTreeLookupParameter<SymbolicExpressionTree> SymbolicExpressionTreeParameter {
     55      get { return (ScopeTreeLookupParameter<SymbolicExpressionTree>)Parameters[SymbolicExpressionTreeParameterName]; }
    5356    }
    54     public ILookupParameter<ISymbolicExpressionTreeInterpreter> SymbolicExpressionTreeInterpreterParameter {
    55       get { return (ILookupParameter<ISymbolicExpressionTreeInterpreter>)Parameters[SymbolicExpressionTreeInterpreterParameterName]; }
     57    public IValueLookupParameter<ISymbolicExpressionTreeInterpreter> SymbolicExpressionTreeInterpreterParameter {
     58      get { return (IValueLookupParameter<ISymbolicExpressionTreeInterpreter>)Parameters[SymbolicExpressionTreeInterpreterParameterName]; }
    5659    }
    57     public ILookupParameter<DataAnalysisProblemData> ProblemDataParameter {
    58       get { return (ILookupParameter<DataAnalysisProblemData>)Parameters[ProblemDataParameterName]; }
     60    public IValueLookupParameter<DataAnalysisProblemData> ProblemDataParameter {
     61      get { return (IValueLookupParameter<DataAnalysisProblemData>)Parameters[ProblemDataParameterName]; }
    5962    }
    60     public ILookupParameter<ItemArray<DoubleValue>> QualityParameter {
    61       get { return (ILookupParameter<ItemArray<DoubleValue>>)Parameters[QualityParameterName]; }
     63    public ScopeTreeLookupParameter<DoubleValue> QualityParameter {
     64      get { return (ScopeTreeLookupParameter<DoubleValue>)Parameters[QualityParameterName]; }
    6265    }
    63     public ILookupParameter<DoubleValue> UpperEstimationLimitParameter {
    64       get { return (ILookupParameter<DoubleValue>)Parameters[UpperEstimationLimitParameterName]; }
     66    public IValueLookupParameter<DoubleValue> UpperEstimationLimitParameter {
     67      get { return (IValueLookupParameter<DoubleValue>)Parameters[UpperEstimationLimitParameterName]; }
    6568    }
    66     public ILookupParameter<DoubleValue> LowerEstimationLimitParameter {
    67       get { return (ILookupParameter<DoubleValue>)Parameters[LowerEstimationLimitParameterName]; }
     69    public IValueLookupParameter<DoubleValue> LowerEstimationLimitParameter {
     70      get { return (IValueLookupParameter<DoubleValue>)Parameters[LowerEstimationLimitParameterName]; }
    6871    }
    6972    public ILookupParameter<SymbolicRegressionSolution> BestSolutionParameter {
     
    7780    }
    7881
    79     public PopulationBestSymbolicRegressionSolutionAnalyzer()
     82    public BestSymbolicRegressionSolutionAnalyzer()
    8083      : base() {
    8184      Parameters.Add(new ScopeTreeLookupParameter<SymbolicExpressionTree>(SymbolicExpressionTreeParameterName, "The symbolic expression trees to analyze."));
    82       Parameters.Add(new LookupParameter<ISymbolicExpressionTreeInterpreter>(SymbolicExpressionTreeInterpreterParameterName, "The interpreter that should be used for the analysis of symbolic expression trees."));
    83       Parameters.Add(new LookupParameter<DataAnalysisProblemData>(ProblemDataParameterName, "The problem data for which the symbolic expression tree is a solution."));
    84       Parameters.Add(new LookupParameter<DoubleValue>(UpperEstimationLimitParameterName, "The upper estimation limit that was set for the evaluation of the symbolic expression trees."));
    85       Parameters.Add(new LookupParameter<DoubleValue>(LowerEstimationLimitParameterName, "The lower estimation limit that was set for the evaluation of the symbolic expression trees."));
     85      Parameters.Add(new ValueLookupParameter<ISymbolicExpressionTreeInterpreter>(SymbolicExpressionTreeInterpreterParameterName, "The interpreter that should be used for the analysis of symbolic expression trees."));
     86      Parameters.Add(new ValueLookupParameter<DataAnalysisProblemData>(ProblemDataParameterName, "The problem data for which the symbolic expression tree is a solution."));
     87      Parameters.Add(new ValueLookupParameter<DoubleValue>(UpperEstimationLimitParameterName, "The upper estimation limit that was set for the evaluation of the symbolic expression trees."));
     88      Parameters.Add(new ValueLookupParameter<DoubleValue>(LowerEstimationLimitParameterName, "The lower estimation limit that was set for the evaluation of the symbolic expression trees."));
    8689      Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>(QualityParameterName, "The qualities of the symbolic regression trees which should be analyzed."));
    8790      Parameters.Add(new LookupParameter<SymbolicRegressionSolution>(BestSolutionParameterName, "The best symbolic regression solution."));
     
    103106      SymbolicRegressionSolution solution = BestSolutionParameter.ActualValue;
    104107      if (solution == null) {
    105         var model = new SymbolicRegressionModel(interpreter, expressions[i], GetInputVariables(expressions[i]));
     108        var model = new SymbolicRegressionModel((ISymbolicExpressionTreeInterpreter)interpreter.Clone(), expressions[i], GetInputVariables(expressions[i]));
    106109        solution = new SymbolicRegressionSolution(problemData, model, lowerEstimationLimit.Value, upperEstimationLimit.Value);
    107110        BestSolutionParameter.ActualValue = solution;
    108111        BestSolutionQualityParameter.ActualValue = qualities[i];
    109         results.Add(new Result("Best Symbolic Regression Solution", solution));
     112        results.Add(new Result(BestSolutionResultName, solution));
     113        results.Add(new Result(BestSolutionInputvariableCountResultName, new IntValue(model.InputVariables.Count())));
    110114      } else {
    111115        if (BestSolutionQualityParameter.ActualValue.Value > qualities[i].Value) {
    112           var model = new SymbolicRegressionModel(interpreter, expressions[i], GetInputVariables(expressions[i]));
     116          var model = new SymbolicRegressionModel((ISymbolicExpressionTreeInterpreter)interpreter.Clone(), expressions[i], GetInputVariables(expressions[i]));
    113117          solution = new SymbolicRegressionSolution(problemData, model, lowerEstimationLimit.Value, upperEstimationLimit.Value);
    114118          BestSolutionParameter.ActualValue = solution;
    115119          BestSolutionQualityParameter.ActualValue = qualities[i];
    116           results["Best Symbolic Regression Solution"].Value = solution;
     120          results[BestSolutionResultName].Value = solution;
     121          results[BestSolutionInputvariableCountResultName].Value = new IntValue(model.InputVariables.Count());
    117122        }
    118123      }
Note: See TracChangeset for help on using the changeset viewer.