Changeset 8915 for branches/HeuristicLab.TreeSimplifier/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SymbolicRegressionSolution.cs
- Timestamp:
- 11/15/12 16:47:25 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.TreeSimplifier/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SymbolicRegressionSolution.cs
r7259 r8915 20 20 #endregion 21 21 22 using System.Linq; 22 23 using HeuristicLab.Common; 23 24 using HeuristicLab.Core; … … 35 36 private const string ModelLengthResultName = "Model Length"; 36 37 private const string ModelDepthResultName = "Model Depth"; 38 39 private const string EstimationLimitsResultsResultName = "Estimation Limits Results"; 40 private const string EstimationLimitsResultName = "Estimation Limits"; 41 private const string TrainingUpperEstimationLimitHitsResultName = "Training Upper Estimation Limit Hits"; 42 private const string TestLowerEstimationLimitHitsResultName = "Test Lower Estimation Limit Hits"; 43 private const string TrainingLowerEstimationLimitHitsResultName = "Training Lower Estimation Limit Hits"; 44 private const string TestUpperEstimationLimitHitsResultName = "Test Upper Estimation Limit Hits"; 45 private const string TrainingNaNEvaluationsResultName = "Training NaN Evaluations"; 46 private const string TestNaNEvaluationsResultName = "Test NaN Evaluations"; 37 47 38 48 public new ISymbolicRegressionModel Model { … … 53 63 } 54 64 65 private ResultCollection EstimationLimitsResultCollection { 66 get { return (ResultCollection)this[EstimationLimitsResultsResultName].Value; } 67 } 68 public DoubleLimit EstimationLimits { 69 get { return (DoubleLimit)EstimationLimitsResultCollection[EstimationLimitsResultName].Value; } 70 } 71 72 public int TrainingUpperEstimationLimitHits { 73 get { return ((IntValue)EstimationLimitsResultCollection[TrainingUpperEstimationLimitHitsResultName].Value).Value; } 74 private set { ((IntValue)EstimationLimitsResultCollection[TrainingUpperEstimationLimitHitsResultName].Value).Value = value; } 75 } 76 public int TestUpperEstimationLimitHits { 77 get { return ((IntValue)EstimationLimitsResultCollection[TestUpperEstimationLimitHitsResultName].Value).Value; } 78 private set { ((IntValue)EstimationLimitsResultCollection[TestUpperEstimationLimitHitsResultName].Value).Value = value; } 79 } 80 public int TrainingLowerEstimationLimitHits { 81 get { return ((IntValue)EstimationLimitsResultCollection[TrainingLowerEstimationLimitHitsResultName].Value).Value; } 82 private set { ((IntValue)EstimationLimitsResultCollection[TrainingLowerEstimationLimitHitsResultName].Value).Value = value; } 83 } 84 public int TestLowerEstimationLimitHits { 85 get { return ((IntValue)EstimationLimitsResultCollection[TestLowerEstimationLimitHitsResultName].Value).Value; } 86 private set { ((IntValue)EstimationLimitsResultCollection[TestLowerEstimationLimitHitsResultName].Value).Value = value; } 87 } 88 public int TrainingNaNEvaluations { 89 get { return ((IntValue)EstimationLimitsResultCollection[TrainingNaNEvaluationsResultName].Value).Value; } 90 private set { ((IntValue)EstimationLimitsResultCollection[TrainingNaNEvaluationsResultName].Value).Value = value; } 91 } 92 public int TestNaNEvaluations { 93 get { return ((IntValue)EstimationLimitsResultCollection[TestNaNEvaluationsResultName].Value).Value; } 94 private set { ((IntValue)EstimationLimitsResultCollection[TestNaNEvaluationsResultName].Value).Value = value; } 95 } 96 55 97 [StorableConstructor] 56 98 private SymbolicRegressionSolution(bool deserializing) : base(deserializing) { } … … 62 104 Add(new Result(ModelLengthResultName, "Length of the symbolic regression model.", new IntValue())); 63 105 Add(new Result(ModelDepthResultName, "Depth of the symbolic regression model.", new IntValue())); 106 107 ResultCollection estimationLimitResults = new ResultCollection(); 108 estimationLimitResults.Add(new Result(EstimationLimitsResultName, "", new DoubleLimit())); 109 estimationLimitResults.Add(new Result(TrainingUpperEstimationLimitHitsResultName, "", new IntValue())); 110 estimationLimitResults.Add(new Result(TestUpperEstimationLimitHitsResultName, "", new IntValue())); 111 estimationLimitResults.Add(new Result(TrainingLowerEstimationLimitHitsResultName, "", new IntValue())); 112 estimationLimitResults.Add(new Result(TestLowerEstimationLimitHitsResultName, "", new IntValue())); 113 estimationLimitResults.Add(new Result(TrainingNaNEvaluationsResultName, "", new IntValue())); 114 estimationLimitResults.Add(new Result(TestNaNEvaluationsResultName, "", new IntValue())); 115 Add(new Result(EstimationLimitsResultsResultName, "Results concerning the estimation limits of symbolic regression solution", estimationLimitResults)); 116 64 117 RecalculateResults(); 65 118 } … … 69 122 } 70 123 124 [StorableHook(HookType.AfterDeserialization)] 125 private void AfterDeserialization() { 126 if (!ContainsKey(EstimationLimitsResultsResultName)) { 127 ResultCollection estimationLimitResults = new ResultCollection(); 128 estimationLimitResults.Add(new Result(EstimationLimitsResultName, "", new DoubleLimit())); 129 estimationLimitResults.Add(new Result(TrainingUpperEstimationLimitHitsResultName, "", new IntValue())); 130 estimationLimitResults.Add(new Result(TestUpperEstimationLimitHitsResultName, "", new IntValue())); 131 estimationLimitResults.Add(new Result(TrainingLowerEstimationLimitHitsResultName, "", new IntValue())); 132 estimationLimitResults.Add(new Result(TestLowerEstimationLimitHitsResultName, "", new IntValue())); 133 estimationLimitResults.Add(new Result(TrainingNaNEvaluationsResultName, "", new IntValue())); 134 estimationLimitResults.Add(new Result(TestNaNEvaluationsResultName, "", new IntValue())); 135 Add(new Result(EstimationLimitsResultsResultName, "Results concerning the estimation limits of symbolic regression solution", estimationLimitResults)); 136 CalculateResults(); 137 } 138 } 139 71 140 protected override void RecalculateResults() { 72 141 base.RecalculateResults(); 142 CalculateResults(); 143 } 144 145 private void CalculateResults() { 73 146 ModelLength = Model.SymbolicExpressionTree.Length; 74 147 ModelDepth = Model.SymbolicExpressionTree.Depth; 148 149 EstimationLimits.Lower = Model.LowerEstimationLimit; 150 EstimationLimits.Upper = Model.UpperEstimationLimit; 151 152 TrainingUpperEstimationLimitHits = EstimatedTrainingValues.Count(x => x.IsAlmost(Model.UpperEstimationLimit)); 153 TestUpperEstimationLimitHits = EstimatedTestValues.Count(x => x.IsAlmost(Model.UpperEstimationLimit)); 154 TrainingLowerEstimationLimitHits = EstimatedTrainingValues.Count(x => x.IsAlmost(Model.LowerEstimationLimit)); 155 TestLowerEstimationLimitHits = EstimatedTestValues.Count(x => x.IsAlmost(Model.LowerEstimationLimit)); 156 TrainingNaNEvaluations = Model.Interpreter.GetSymbolicExpressionTreeValues(Model.SymbolicExpressionTree, ProblemData.Dataset, ProblemData.TrainingIndices).Count(double.IsNaN); 157 TestNaNEvaluations = Model.Interpreter.GetSymbolicExpressionTreeValues(Model.SymbolicExpressionTree, ProblemData.Dataset, ProblemData.TestIndices).Count(double.IsNaN); 75 158 } 76 159 }
Note: See TracChangeset
for help on using the changeset viewer.