Changeset 3452 for trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/SymbolicRegressionProblem.cs
- Timestamp:
- 04/20/10 20:31:23 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/SymbolicRegressionProblem.cs
r3442 r3452 84 84 get { return VisualizerParameter; } 85 85 } 86 public ValueParameter<DoubleValue> BestKnownQualityParameter {87 get { return ( ValueParameter<DoubleValue>)Parameters["BestKnownQuality"]; }86 public OptionalValueParameter<DoubleValue> BestKnownQualityParameter { 87 get { return (OptionalValueParameter<DoubleValue>)Parameters["BestKnownQuality"]; } 88 88 } 89 89 IParameter ISingleObjectiveProblem.BestKnownQualityParameter { … … 147 147 Parameters.Add(new ValueParameter<SymbolicExpressionTreeCreator>("SolutionCreator", "The operator which should be used to create new symbolic regression solutions.", creator)); 148 148 Parameters.Add(new ValueParameter<ISymbolicRegressionEvaluator>("Evaluator", "The operator which should be used to evaluate symbolic regression solutions.", evaluator)); 149 Parameters.Add(new ValueParameter<DoubleValue>("BestKnownQuality", "The minimal error value that can be reached by symbolic regression models.", new DoubleValue(0)));149 Parameters.Add(new OptionalValueParameter<DoubleValue>("BestKnownQuality", "The minimal error value that reached by symbolic regression solutions for the problem.")); 150 150 Parameters.Add(new ValueParameter<ISymbolicExpressionGrammar>("FunctionTreeGrammar", "The grammar that should be used for symbolic regression models.", globalGrammar)); 151 151 Parameters.Add(new ValueParameter<IntValue>("MaxExpressionLength", "Maximal length of the symbolic expression.", new IntValue(100))); … … 159 159 creator.MaxFunctionArgumentsParameter.ActualName = "MaxFunctionArguments"; 160 160 creator.MaxFunctionDefinitionsParameter.ActualName = "MaxFunctionDefiningBranches"; 161 evaluator.QualityParameter.ActualName = "TrainingMeanSquaredError";162 161 DataAnalysisProblemDataParameter.ValueChanged += new EventHandler(DataAnalysisProblemDataParameter_ValueChanged); 163 162 DataAnalysisProblemData.ProblemDataChanged += new EventHandler(DataAnalysisProblemData_Changed); … … 169 168 } 170 169 171 void DataAnalysisProblemDataParameter_ValueChanged(object sender, EventArgs e) {172 DataAnalysisProblemData.ProblemDataChanged += new EventHandler(DataAnalysisProblemData_Changed);173 }174 175 void DataAnalysisProblemData_Changed(object sender, EventArgs e) {176 foreach (var varSymbol in FunctionTreeGrammar.Symbols.OfType<HeuristicLab.Problems.DataAnalysis.Symbolic.Symbols.Variable>()) {177 varSymbol.VariableNames = DataAnalysisProblemData.InputVariables.Select(x => x.Value);178 }179 }180 170 181 171 [StorableConstructor] … … 189 179 190 180 #region Events 181 void DataAnalysisProblemDataParameter_ValueChanged(object sender, EventArgs e) { 182 DataAnalysisProblemData.ProblemDataChanged += new EventHandler(DataAnalysisProblemData_Changed); 183 } 184 185 void DataAnalysisProblemData_Changed(object sender, EventArgs e) { 186 foreach (var varSymbol in FunctionTreeGrammar.Symbols.OfType<HeuristicLab.Problems.DataAnalysis.Symbolic.Symbols.Variable>()) { 187 varSymbol.VariableNames = DataAnalysisProblemData.InputVariables.Select(x => x.Value); 188 } 189 UpdatePartitioningParameters(); 190 } 191 192 private void UpdatePartitioningParameters() { 193 int trainingStart = DataAnalysisProblemData.TrainingSamplesStart.Value; 194 int validationEnd = DataAnalysisProblemData.TrainingSamplesEnd.Value; 195 int trainingEnd = trainingStart + (validationEnd - trainingStart) / 2; 196 int validationStart = trainingEnd; 197 var solutionVisualizer = Visualizer as BestValidationSymbolicRegressionSolutionVisualizer; 198 if (solutionVisualizer != null) { 199 solutionVisualizer.ValidationSamplesStartParameter.Value = new IntValue(validationStart); 200 solutionVisualizer.ValidationSamplesEndParameter.Value = new IntValue(validationEnd); 201 } 202 Evaluator.SamplesStartParameter.Value = new IntValue(trainingStart); 203 Evaluator.SamplesEndParameter.Value = new IntValue(trainingEnd); 204 } 205 191 206 public event EventHandler SolutionCreatorChanged; 192 207 private void OnSolutionCreatorChanged() { … … 269 284 } 270 285 private void ParameterizeEvaluator() { 271 Evaluator. FunctionTreeParameter.ActualName = SolutionCreator.SymbolicExpressionTreeParameter.ActualName;286 Evaluator.SymbolicExpressionTreeParameter.ActualName = SolutionCreator.SymbolicExpressionTreeParameter.ActualName; 272 287 Evaluator.RegressionProblemDataParameter.ActualName = DataAnalysisProblemDataParameter.Name; 288 Evaluator.QualityParameter.ActualName = "TrainingMeanSquaredError"; 289 Evaluator.SamplesStartParameter.Value = new IntValue(DataAnalysisProblemData.TrainingSamplesStart.Value); 290 Evaluator.SamplesEndParameter.Value = new IntValue((DataAnalysisProblemData.TrainingSamplesStart.Value + DataAnalysisProblemData.TrainingSamplesEnd.Value) / 2); 273 291 } 274 292 private void ParameterizeVisualizer() { … … 278 296 solutionVisualizer.SymbolicExpressionTreeParameter.ActualName = SolutionCreator.SymbolicExpressionTreeParameter.ActualName; 279 297 solutionVisualizer.DataAnalysisProblemDataParameter.ActualName = DataAnalysisProblemDataParameter.Name; 298 solutionVisualizer.ValidationSamplesStartParameter.Value = new IntValue((DataAnalysisProblemData.TrainingSamplesStart.Value + DataAnalysisProblemData.TrainingSamplesEnd.Value) / 2); 299 solutionVisualizer.ValidationSamplesEndParameter.Value = new IntValue(DataAnalysisProblemData.TrainingSamplesEnd.Value); 280 300 } 281 301 } … … 289 309 } 290 310 foreach (ISymbolicRegressionEvaluator op in Operators.OfType<ISymbolicRegressionEvaluator>()) { 291 op. FunctionTreeParameter.ActualName = SolutionCreator.SymbolicExpressionTreeParameter.ActualName;311 op.SymbolicExpressionTreeParameter.ActualName = SolutionCreator.SymbolicExpressionTreeParameter.ActualName; 292 312 op.RegressionProblemDataParameter.ActualName = DataAnalysisProblemDataParameter.Name; 293 313 op.NumberOfEvaluatedNodesParameter.ActualName = NumberOfEvaluatedNodesParameter.Name;
Note: See TracChangeset
for help on using the changeset viewer.