Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/28/20 10:43:50 (4 years ago)
Author:
pfleck
Message:

#3040 Merged trunk to branch

Location:
branches/3040_VectorBasedGP
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/3040_VectorBasedGP

  • branches/3040_VectorBasedGP/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression.Views

  • branches/3040_VectorBasedGP/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression.Views/3.4/InteractiveSymbolicRegressionSolutionSimplifierView.cs

    r17180 r17456  
    3838    }
    3939
     40    protected override void SetEnabledStateOfControls() {
     41      base.SetEnabledStateOfControls();
     42
     43      var tree = Content?.Model?.SymbolicExpressionTree;
     44      btnOptimizeConstants.Enabled = tree != null && SymbolicRegressionConstantOptimizationEvaluator.CanOptimizeConstants(tree);
     45    }
     46
    4047    protected override void UpdateModel(ISymbolicExpressionTree tree) {
    4148      var model = new SymbolicRegressionModel(Content.ProblemData.TargetVariable, tree, Content.Model.Interpreter, Content.Model.LowerEstimationLimit, Content.Model.UpperEstimationLimit);
     
    4653    protected override ISymbolicExpressionTree OptimizeConstants(ISymbolicExpressionTree tree, IProgress progress) {
    4754      const int constOptIterations = 50;
    48       const int maxRepetitions = 1000;
     55      const int maxRepetitions = 100;
     56      const double minimumImprovement = 1e-10;
    4957      var regressionProblemData = Content.ProblemData;
    5058      var model = Content.Model;
    5159      progress.CanBeStopped = true;
    52       var prevResult = 0.0;
     60      double prevResult = 0.0, improvement = 0.0;
    5361      var result = 0.0;
    5462      int reps = 0;
     
    5967          applyLinearScaling: true, maxIterations: constOptIterations, updateVariableWeights: true, lowerEstimationLimit: model.LowerEstimationLimit, upperEstimationLimit: model.UpperEstimationLimit,
    6068          iterationCallback: (args, func, obj) => {
    61             double newProgressValue = progress.ProgressValue + 1.0 / (constOptIterations + 2); // (maxIterations + 2) iterations are reported
     69            double newProgressValue = progress.ProgressValue + (1.0 / (constOptIterations + 2) / maxRepetitions); // (constOptIterations + 2) iterations are reported
    6270            progress.ProgressValue = Math.Min(newProgressValue, 1.0);
    6371          });
    6472        reps++;
    65       } while (prevResult < result && reps < maxRepetitions &&
     73        improvement = result - prevResult;
     74      } while (improvement > minimumImprovement && reps < maxRepetitions &&
    6675               progress.ProgressState != ProgressState.StopRequested &&
    6776               progress.ProgressState != ProgressState.CancelRequested);
Note: See TracChangeset for help on using the changeset viewer.