Changeset 17633 for branches/3040_VectorBasedGP/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression.Views/3.4
- Timestamp:
- 06/25/20 16:26:46 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/3040_VectorBasedGP/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression.Views/3.4/InteractiveSymbolicRegressionSolutionSimplifierView.cs
r17502 r17633 43 43 44 44 var tree = Content?.Model?.SymbolicExpressionTree; 45 //btnOptimizeConstants.Enabled = tree != null && NonlinearLeastSquaresConstantOptimizationEvaluator.CanOptimizeConstants(tree); 46 btnOptimizeConstants.Enabled = tree != null && TensorFlowConstantOptimizationEvaluator.CanOptimizeConstants(tree); 45 btnOptimizeConstants.Enabled = tree != null && NonlinearLeastSquaresConstantOptimizationEvaluator.CanOptimizeConstants(tree); 46 btnVectorOptimizeConstants.Enabled = tree != null && TensorFlowConstantOptimizationEvaluator.CanOptimizeConstants(tree); 47 nudLearningRate.Enabled = tree != null && TensorFlowConstantOptimizationEvaluator.CanOptimizeConstants(tree); 47 48 } 48 49 … … 64 65 int reps = 0; 65 66 66 //do { 67 // prevResult = result; 68 // tree = NonlinearLeastSquaresConstantOptimizationEvaluator.OptimizeTree(tree, regressionProblemData, regressionProblemData.TrainingIndices, 69 // applyLinearScaling: true, maxIterations: constOptIterations, updateVariableWeights: true, 70 // cancellationToken: cancellationToken, iterationCallback: (args, func, obj) => { 71 // double newProgressValue = progress.ProgressValue + (1.0 / (constOptIterations + 2) / maxRepetitions); // (constOptIterations + 2) iterations are reported 72 // progress.ProgressValue = Math.Min(newProgressValue, 1.0); 73 // }); 74 // result = SymbolicRegressionSingleObjectivePearsonRSquaredEvaluator.Calculate(model.Interpreter, tree, 75 // model.LowerEstimationLimit, model.UpperEstimationLimit, regressionProblemData, regressionProblemData.TrainingIndices, applyLinearScaling: true); 76 // reps++; 77 // improvement = result - prevResult; 78 //} while (improvement > minimumImprovement && reps < maxRepetitions && 79 // progress.ProgressState != ProgressState.StopRequested && 80 // progress.ProgressState != ProgressState.CancelRequested); 81 //return tree; 67 do { 68 prevResult = result; 69 tree = NonlinearLeastSquaresConstantOptimizationEvaluator.OptimizeTree(tree, regressionProblemData, regressionProblemData.TrainingIndices, 70 applyLinearScaling: true, maxIterations: constOptIterations, updateVariableWeights: true, 71 cancellationToken: cancellationToken, iterationCallback: (args, func, obj) => { 72 double newProgressValue = progress.ProgressValue + (1.0 / (constOptIterations + 2) / maxRepetitions); // (constOptIterations + 2) iterations are reported 73 progress.ProgressValue = Math.Min(newProgressValue, 1.0); 74 }); 75 result = SymbolicRegressionSingleObjectivePearsonRSquaredEvaluator.Calculate(model.Interpreter, tree, 76 model.LowerEstimationLimit, model.UpperEstimationLimit, regressionProblemData, regressionProblemData.TrainingIndices, applyLinearScaling: true); 77 reps++; 78 improvement = result - prevResult; 79 } while (improvement > minimumImprovement && reps < maxRepetitions && 80 progress.ProgressState != ProgressState.StopRequested && 81 progress.ProgressState != ProgressState.CancelRequested); 82 return tree; 83 } 84 85 protected override ISymbolicExpressionTree VectorOptimizeConstants(ISymbolicExpressionTree tree, CancellationToken cancellationToken, IProgress progress) { 82 86 const int maxIterations = 1000; 87 var regressionProblemData = Content.ProblemData; 88 progress.CanBeStopped = true; 89 90 var learningRate = Math.Pow(10, (double)nudLearningRate.Value); 91 83 92 return TensorFlowConstantOptimizationEvaluator.OptimizeTree(tree, regressionProblemData, 84 93 regressionProblemData.TrainingIndices, 85 applyLinearScaling: false, updateVariableWeights: true, maxIterations: maxIterations, learningRate: 0.0001,94 applyLinearScaling: false, updateVariableWeights: true, maxIterations: maxIterations, learningRate: learningRate, 86 95 cancellationToken: cancellationToken, 87 96 progress: new SynchronousProgress<double>(cost => {
Note: See TracChangeset
for help on using the changeset viewer.