Changeset 3681 for trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Analyzers/BestSymbolicRegressionSolutionAnalyzer.cs
- Timestamp:
- 05/06/10 19:02:45 (14 years ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Analyzers/BestSymbolicRegressionSolutionAnalyzer.cs
r3665 r3681 36 36 37 37 namespace 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.")] 39 39 [StorableClass] 40 public sealed class PopulationBestSymbolicRegressionSolutionAnalyzer : SingleSuccessorOperator, ISymbolicRegressionSolutionPopulationAnalyzer {40 public sealed class BestSymbolicRegressionSolutionAnalyzer : SingleSuccessorOperator, ISymbolicRegressionAnalyzer { 41 41 private const string SymbolicExpressionTreeParameterName = "SymbolicExpressionTree"; 42 42 private const string SymbolicExpressionTreeInterpreterParameterName = "SymbolicExpressionTreeInterpreter"; … … 49 49 private const string ResultsParameterName = "Results"; 50 50 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]; } 53 56 } 54 public I LookupParameter<ISymbolicExpressionTreeInterpreter> SymbolicExpressionTreeInterpreterParameter {55 get { return (I LookupParameter<ISymbolicExpressionTreeInterpreter>)Parameters[SymbolicExpressionTreeInterpreterParameterName]; }57 public IValueLookupParameter<ISymbolicExpressionTreeInterpreter> SymbolicExpressionTreeInterpreterParameter { 58 get { return (IValueLookupParameter<ISymbolicExpressionTreeInterpreter>)Parameters[SymbolicExpressionTreeInterpreterParameterName]; } 56 59 } 57 public I LookupParameter<DataAnalysisProblemData> ProblemDataParameter {58 get { return (I LookupParameter<DataAnalysisProblemData>)Parameters[ProblemDataParameterName]; }60 public IValueLookupParameter<DataAnalysisProblemData> ProblemDataParameter { 61 get { return (IValueLookupParameter<DataAnalysisProblemData>)Parameters[ProblemDataParameterName]; } 59 62 } 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]; } 62 65 } 63 public I LookupParameter<DoubleValue> UpperEstimationLimitParameter {64 get { return (I LookupParameter<DoubleValue>)Parameters[UpperEstimationLimitParameterName]; }66 public IValueLookupParameter<DoubleValue> UpperEstimationLimitParameter { 67 get { return (IValueLookupParameter<DoubleValue>)Parameters[UpperEstimationLimitParameterName]; } 65 68 } 66 public I LookupParameter<DoubleValue> LowerEstimationLimitParameter {67 get { return (I LookupParameter<DoubleValue>)Parameters[LowerEstimationLimitParameterName]; }69 public IValueLookupParameter<DoubleValue> LowerEstimationLimitParameter { 70 get { return (IValueLookupParameter<DoubleValue>)Parameters[LowerEstimationLimitParameterName]; } 68 71 } 69 72 public ILookupParameter<SymbolicRegressionSolution> BestSolutionParameter { … … 77 80 } 78 81 79 public PopulationBestSymbolicRegressionSolutionAnalyzer()82 public BestSymbolicRegressionSolutionAnalyzer() 80 83 : base() { 81 84 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.")); 86 89 Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>(QualityParameterName, "The qualities of the symbolic regression trees which should be analyzed.")); 87 90 Parameters.Add(new LookupParameter<SymbolicRegressionSolution>(BestSolutionParameterName, "The best symbolic regression solution.")); … … 103 106 SymbolicRegressionSolution solution = BestSolutionParameter.ActualValue; 104 107 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])); 106 109 solution = new SymbolicRegressionSolution(problemData, model, lowerEstimationLimit.Value, upperEstimationLimit.Value); 107 110 BestSolutionParameter.ActualValue = solution; 108 111 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()))); 110 114 } else { 111 115 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])); 113 117 solution = new SymbolicRegressionSolution(problemData, model, lowerEstimationLimit.Value, upperEstimationLimit.Value); 114 118 BestSolutionParameter.ActualValue = solution; 115 119 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()); 117 122 } 118 123 }
Note: See TracChangeset
for help on using the changeset viewer.