Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/04/15 11:16:41 (9 years ago)
Author:
mkommend
Message:

#2175: Additional calculation of results for EuroCast 2015.

File:
1 copied

Legend:

Unmodified
Added
Removed
  • branches/DataAnalysis.ComplexityAnalyzer/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/MultiObjective/PearsonRSquaredNumberofVariablesEvaluator.cs

    r11861 r11883  
    2626using HeuristicLab.Data;
    2727using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
     28using HeuristicLab.Parameters;
    2829using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2930
    3031namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Regression {
    31   [Item("Pearson R² & Nested Tree size Evaluator", "Calculates the Pearson R² and the nested tree size of a symbolic regression solution.")]
     32  [Item("Pearson R² & Number of Variables Evaluator", "Calculates the Pearson R² and the number of used variables of a symbolic regression solution.")]
    3233  [StorableClass]
    33   public class SymbolicRegressionMultiObjectivePearsonRSquaredNestedTreeSizeEvaluator : SymbolicRegressionMultiObjectiveEvaluator {
     34  public class PearsonRSquaredNumberOfVariablesEvaluator : SymbolicRegressionMultiObjectiveEvaluator {
     35    private const string useConstantOptimizationParameterName = "Use constant optimization";
     36    public IFixedValueParameter<BoolValue> UseConstantOptimizationParameter {
     37      get { return (IFixedValueParameter<BoolValue>)Parameters[useConstantOptimizationParameterName]; }
     38    }
     39    public bool UseConstantOptimization {
     40      get { return UseConstantOptimizationParameter.Value.Value; }
     41      set { UseConstantOptimizationParameter.Value.Value = value; }
     42    }
     43
    3444    [StorableConstructor]
    35     protected SymbolicRegressionMultiObjectivePearsonRSquaredNestedTreeSizeEvaluator(bool deserializing) : base(deserializing) { }
    36     protected SymbolicRegressionMultiObjectivePearsonRSquaredNestedTreeSizeEvaluator(SymbolicRegressionMultiObjectivePearsonRSquaredNestedTreeSizeEvaluator original, Cloner cloner)
     45    protected PearsonRSquaredNumberOfVariablesEvaluator(bool deserializing) : base(deserializing) { }
     46    protected PearsonRSquaredNumberOfVariablesEvaluator(PearsonRSquaredNumberOfVariablesEvaluator original, Cloner cloner)
    3747      : base(original, cloner) {
    3848    }
    3949    public override IDeepCloneable Clone(Cloner cloner) {
    40       return new SymbolicRegressionMultiObjectivePearsonRSquaredNestedTreeSizeEvaluator(this, cloner);
     50      return new PearsonRSquaredNumberOfVariablesEvaluator(this, cloner);
    4151    }
    4252
    43     public SymbolicRegressionMultiObjectivePearsonRSquaredNestedTreeSizeEvaluator() : base() { }
     53    public PearsonRSquaredNumberOfVariablesEvaluator()
     54      : base() {
     55      Parameters.Add(new FixedValueParameter<BoolValue>(useConstantOptimizationParameterName, "", new BoolValue(false)));
     56    }
    4457
    4558    public override IEnumerable<bool> Maximization { get { return new bool[2] { true, false }; } }
     
    4861      IEnumerable<int> rows = GenerateRowsToEvaluate();
    4962      var solution = SymbolicExpressionTreeParameter.ActualValue;
     63      var problemData = ProblemDataParameter.ActualValue;
     64      var interpreter = SymbolicDataAnalysisTreeInterpreterParameter.ActualValue;
     65      var estimationLimits = EstimationLimitsParameter.ActualValue;
     66      var applyLinearScaling = ApplyLinearScalingParameter.ActualValue.Value;
     67
     68      if (UseConstantOptimization) {
     69        SymbolicRegressionConstantOptimizationEvaluator.OptimizeConstants(interpreter, solution, problemData, rows, applyLinearScaling, 5, estimationLimits.Upper, estimationLimits.Lower);
     70      }
    5071      double[] qualities = Calculate(SymbolicDataAnalysisTreeInterpreterParameter.ActualValue, solution, EstimationLimitsParameter.ActualValue.Lower, EstimationLimitsParameter.ActualValue.Upper, ProblemDataParameter.ActualValue, rows, ApplyLinearScalingParameter.ActualValue.Value);
    5172      QualitiesParameter.ActualValue = new DoubleArray(qualities);
     
    5576    public static double[] Calculate(ISymbolicDataAnalysisExpressionTreeInterpreter interpreter, ISymbolicExpressionTree solution, double lowerEstimationLimit, double upperEstimationLimit, IRegressionProblemData problemData, IEnumerable<int> rows, bool applyLinearScaling) {
    5677      double r2 = SymbolicRegressionSingleObjectivePearsonRSquaredEvaluator.Calculate(interpreter, solution, lowerEstimationLimit, upperEstimationLimit, problemData, rows, applyLinearScaling);
    57       return new double[2] { r2, solution.IterateNodesPostfix().Sum(n => n.GetLength()) };
     78      return new double[2] { r2, solution.IterateNodesPostfix().OfType<VariableTreeNode>().Count() };
    5879    }
    5980
Note: See TracChangeset for help on using the changeset viewer.