Changeset 18180 for branches/3138_Shape_Constraints_Transformations/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression.Views
- Timestamp:
- 01/10/22 10:15:25 (2 years ago)
- Location:
- branches/3138_Shape_Constraints_Transformations
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/3138_Shape_Constraints_Transformations
- Property svn:mergeinfo changed
-
branches/3138_Shape_Constraints_Transformations/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression.Views
- Property svn:mergeinfo changed
-
branches/3138_Shape_Constraints_Transformations/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression.Views/3.4/InteractiveSymbolicRegressionSolutionSimplifierView.Designer.cs
r17180 r18180 53 53 this.Name = "InteractiveSymbolicRegressionSolutionSimplifierView"; 54 54 this.Size = new System.Drawing.Size(564, 348); 55 this.btnOptimize Constants.Enabled = true;55 this.btnOptimizeParameters.Enabled = true; 56 56 this.ResumeLayout(false); 57 57 } -
branches/3138_Shape_Constraints_Transformations/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression.Views/3.4/InteractiveSymbolicRegressionSolutionSimplifierView.cs
r17430 r18180 42 42 43 43 var tree = Content?.Model?.SymbolicExpressionTree; 44 btnOptimize Constants.Enabled = tree != null && SymbolicRegressionConstantOptimizationEvaluator.CanOptimizeConstants(tree);44 btnOptimizeParameters.Enabled = tree != null && SymbolicRegressionParameterOptimizationEvaluator.CanOptimizeParameters(tree); 45 45 } 46 46 … … 51 51 } 52 52 53 protected override ISymbolicExpressionTree Optimize Constants(ISymbolicExpressionTree tree, IProgress progress) {54 const int constOptIterations = 50;53 protected override ISymbolicExpressionTree OptimizeParameters(ISymbolicExpressionTree tree, IProgress progress) { 54 const int iterations = 50; 55 55 const int maxRepetitions = 100; 56 56 const double minimumImprovement = 1e-10; … … 64 64 do { 65 65 prevResult = result; 66 result = SymbolicRegression ConstantOptimizationEvaluator.OptimizeConstants(model.Interpreter, tree, regressionProblemData, regressionProblemData.TrainingIndices,67 applyLinearScaling: true, maxIterations: constOptIterations, updateVariableWeights: true, lowerEstimationLimit: model.LowerEstimationLimit, upperEstimationLimit: model.UpperEstimationLimit,66 result = SymbolicRegressionParameterOptimizationEvaluator.OptimizeParameters(model.Interpreter, tree, regressionProblemData, regressionProblemData.TrainingIndices, 67 applyLinearScaling: true, maxIterations: iterations, updateVariableWeights: true, lowerEstimationLimit: model.LowerEstimationLimit, upperEstimationLimit: model.UpperEstimationLimit, 68 68 iterationCallback: (args, func, obj) => { 69 double newProgressValue = progress.ProgressValue + (1.0 / ( constOptIterations + 2) / maxRepetitions); // (constOptIterations + 2) iterations are reported69 double newProgressValue = progress.ProgressValue + (1.0 / (iterations + 2) / maxRepetitions); // (iterations + 2) iterations are reported 70 70 progress.ProgressValue = Math.Min(newProgressValue, 1.0); 71 71 }); -
branches/3138_Shape_Constraints_Transformations/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression.Views/3.4/SymbolicRegressionSolutionResponseFunctionView.cs
r17180 r18180 120 120 121 121 private void ChangeVariableValue(string variableName, double value) { 122 foreach (var constNode in variableNodes[variableName].Cast<ConstantTreeNode>())123 constNode.Value = value;122 foreach (var numNode in variableNodes[variableName].Cast<NumberTreeNode>()) 123 numNode.Value = value; 124 124 125 125 UpdateResponseSeries(); … … 210 210 211 211 int childIndex = varNode.Parent.IndexOfSubtree(varNode); 212 var replacementNode = Make ConstantTreeNode(medianValues[varNode.VariableName]);212 var replacementNode = MakeNumberTreeNode(medianValues[varNode.VariableName]); 213 213 var parent = varNode.Parent; 214 214 parent.RemoveSubtree(childIndex); … … 223 223 } 224 224 225 private ISymbolicExpressionTreeNode MakeProduct( ConstantTreeNode c, double weight) {225 private ISymbolicExpressionTreeNode MakeProduct(NumberTreeNode c, double weight) { 226 226 var mul = new Multiplication(); 227 227 var prod = mul.CreateTreeNode(); 228 prod.AddSubtree(Make ConstantTreeNode(weight));228 prod.AddSubtree(MakeNumberTreeNode(weight)); 229 229 prod.AddSubtree(c); 230 230 return prod; 231 231 } 232 232 233 private ConstantTreeNode MakeConstantTreeNode(double value) {234 Constant constant = new Constant();235 constant.MinValue = value - 1;236 constant.MaxValue = value + 1;237 ConstantTreeNode constantTreeNode = (ConstantTreeNode)constant.CreateTreeNode();238 constantTreeNode.Value = value;239 return constantTreeNode;233 private NumberTreeNode MakeNumberTreeNode(double value) { 234 Number number = new Number(); 235 number.MinValue = value - 1; 236 number.MaxValue = value + 1; 237 NumberTreeNode numberTreeNode = (NumberTreeNode)number.CreateTreeNode(); 238 numberTreeNode.Value = value; 239 return numberTreeNode; 240 240 } 241 241 }
Note: See TracChangeset
for help on using the changeset viewer.