Changeset 11883 for branches/DataAnalysis.ComplexityAnalyzer/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/MultiObjective/PearsonRSquaredNumberofVariablesEvaluator.cs
- Timestamp:
- 02/04/15 11:16:41 (9 years ago)
- File:
-
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/DataAnalysis.ComplexityAnalyzer/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/MultiObjective/PearsonRSquaredNumberofVariablesEvaluator.cs
r11861 r11883 26 26 using HeuristicLab.Data; 27 27 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; 28 using HeuristicLab.Parameters; 28 29 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 29 30 30 31 namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Regression { 31 [Item("Pearson R² & N ested Tree size Evaluator", "Calculates the Pearson R² and the nested tree sizeof 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.")] 32 33 [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 34 44 [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) 37 47 : base(original, cloner) { 38 48 } 39 49 public override IDeepCloneable Clone(Cloner cloner) { 40 return new SymbolicRegressionMultiObjectivePearsonRSquaredNestedTreeSizeEvaluator(this, cloner);50 return new PearsonRSquaredNumberOfVariablesEvaluator(this, cloner); 41 51 } 42 52 43 public SymbolicRegressionMultiObjectivePearsonRSquaredNestedTreeSizeEvaluator() : base() { } 53 public PearsonRSquaredNumberOfVariablesEvaluator() 54 : base() { 55 Parameters.Add(new FixedValueParameter<BoolValue>(useConstantOptimizationParameterName, "", new BoolValue(false))); 56 } 44 57 45 58 public override IEnumerable<bool> Maximization { get { return new bool[2] { true, false }; } } … … 48 61 IEnumerable<int> rows = GenerateRowsToEvaluate(); 49 62 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 } 50 71 double[] qualities = Calculate(SymbolicDataAnalysisTreeInterpreterParameter.ActualValue, solution, EstimationLimitsParameter.ActualValue.Lower, EstimationLimitsParameter.ActualValue.Upper, ProblemDataParameter.ActualValue, rows, ApplyLinearScalingParameter.ActualValue.Value); 51 72 QualitiesParameter.ActualValue = new DoubleArray(qualities); … … 55 76 public static double[] Calculate(ISymbolicDataAnalysisExpressionTreeInterpreter interpreter, ISymbolicExpressionTree solution, double lowerEstimationLimit, double upperEstimationLimit, IRegressionProblemData problemData, IEnumerable<int> rows, bool applyLinearScaling) { 56 77 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() }; 58 79 } 59 80
Note: See TracChangeset
for help on using the changeset viewer.