Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
09/29/15 16:49:13 (9 years ago)
Author:
bburlacu
Message:

#2480: Implemented the necessary changes in the evaluators, and removed obsolete code from the phenotypic diversity analyzer.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SymbolicRegressionPhenotypicDiversityAnalyzer.cs

    r12422 r12973  
    2121
    2222using System.Collections.Generic;
    23 using System.Linq;
    2423using HeuristicLab.Analysis;
    2524using HeuristicLab.Common;
    2625using HeuristicLab.Core;
    27 using HeuristicLab.Data;
    28 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
    2926using HeuristicLab.Optimization;
    30 using HeuristicLab.Parameters;
    3127using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    3228
     
    3430  [Item("SymbolicRegressionPhenotypicDiversityAnalyzer", "An analyzer which calculates diversity based on the phenotypic distance between trees")]
    3531  [StorableClass]
    36   public class SymbolicRegressionPhenotypicDiversityAnalyzer : PopulationSimilarityAnalyzer,
    37     ISymbolicDataAnalysisBoundedOperator, ISymbolicDataAnalysisInterpreterOperator, ISymbolicExpressionTreeAnalyzer {
    38     #region parameter names
    39     private const string SymbolicExpressionTreeParameterName = "SymbolicExpressionTree";
    40     private const string EvaluatedValuesParameterName = "EstimatedValues";
    41     private const string SymbolicDataAnalysisTreeInterpreterParameterName = "SymbolicExpressionTreeInterpreter";
    42     private const string ProblemDataParameterName = "ProblemData";
    43     private const string EstimationLimitsParameterName = "EstimationLimits";
    44     #endregion
    45 
    46     #region parameter properties
    47     public IScopeTreeLookupParameter<ISymbolicExpressionTree> SymbolicExpressionTreeParameter {
    48       get { return (IScopeTreeLookupParameter<ISymbolicExpressionTree>)Parameters[SymbolicExpressionTreeParameterName]; }
    49     }
    50     private IScopeTreeLookupParameter<DoubleArray> EvaluatedValuesParameter {
    51       get { return (IScopeTreeLookupParameter<DoubleArray>)Parameters[EvaluatedValuesParameterName]; }
    52     }
    53     public ILookupParameter<ISymbolicDataAnalysisExpressionTreeInterpreter> SymbolicDataAnalysisTreeInterpreterParameter {
    54       get { return (ILookupParameter<ISymbolicDataAnalysisExpressionTreeInterpreter>)Parameters[SymbolicDataAnalysisTreeInterpreterParameterName]; }
    55     }
    56     public IValueLookupParameter<IRegressionProblemData> ProblemDataParameter {
    57       get { return (IValueLookupParameter<IRegressionProblemData>)Parameters[ProblemDataParameterName]; }
    58     }
    59     public IValueLookupParameter<DoubleLimit> EstimationLimitsParameter {
    60       get { return (IValueLookupParameter<DoubleLimit>)Parameters[EstimationLimitsParameterName]; }
    61     }
    62     #endregion
    63 
     32  public class SymbolicRegressionPhenotypicDiversityAnalyzer : PopulationSimilarityAnalyzer {
    6433    public SymbolicRegressionPhenotypicDiversityAnalyzer(IEnumerable<ISolutionSimilarityCalculator> validSimilarityCalculators)
    6534      : base(validSimilarityCalculators) {
    66       #region add parameters
    67       Parameters.Add(new ScopeTreeLookupParameter<ISymbolicExpressionTree>(SymbolicExpressionTreeParameterName, "The symbolic expression trees."));
    68       Parameters.Add(new ScopeTreeLookupParameter<DoubleArray>(EvaluatedValuesParameterName, "Intermediate estimated values to be saved in the scopes."));
    69       Parameters.Add(new LookupParameter<ISymbolicDataAnalysisExpressionTreeInterpreter>(SymbolicDataAnalysisTreeInterpreterParameterName, "The interpreter that should be used to calculate the output values of the symbolic data analysis tree."));
    70       Parameters.Add(new ValueLookupParameter<IRegressionProblemData>(ProblemDataParameterName, "The problem data on which the symbolic data analysis solution should be evaluated."));
    71       Parameters.Add(new ValueLookupParameter<DoubleLimit>(EstimationLimitsParameterName, "The upper and lower limit that should be used as cut off value for the output values of symbolic data analysis trees."));
    72       #endregion
    7335
    7436      UpdateCounterParameter.ActualName = "PhenotypicDiversityAnalyzerUpdateCounter";
     
    8850      : base(original, cloner) {
    8951    }
    90 
    91     public override IOperation Apply() {
    92       int updateInterval = UpdateIntervalParameter.Value.Value;
    93       IntValue updateCounter = UpdateCounterParameter.ActualValue;
    94 
    95       if (updateCounter == null) {
    96         updateCounter = new IntValue(updateInterval);
    97         UpdateCounterParameter.ActualValue = updateCounter;
    98       }
    99 
    100       if (updateCounter.Value == updateInterval) {
    101         var trees = SymbolicExpressionTreeParameter.ActualValue;
    102         var interpreter = SymbolicDataAnalysisTreeInterpreterParameter.ActualValue;
    103         var ds = ProblemDataParameter.ActualValue.Dataset;
    104         var rows = ProblemDataParameter.ActualValue.TrainingIndices;
    105 
    106         var evaluatedValues = new ItemArray<DoubleArray>(trees.Select(t => new DoubleArray(interpreter.GetSymbolicExpressionTreeValues(t, ds, rows).ToArray())));
    107         EvaluatedValuesParameter.ActualValue = evaluatedValues;
    108       }
    109       return base.Apply();
    110     }
    11152  }
    11253}
Note: See TracChangeset for help on using the changeset viewer.