Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
08/10/17 13:49:26 (7 years ago)
Author:
pfleck
Message:

#1666 Made constant optimization and impact/replacement-values calculation async and added progress indication.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/SimplifierViewsProgress/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression.Views/3.4/InteractiveSymbolicRegressionSolutionSimplifierView.cs

    r14826 r15319  
    2222using System;
    2323using System.Collections.Generic;
    24 using System.Linq;
     24using System.Threading.Tasks;
    2525using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
    2626using HeuristicLab.Problems.DataAnalysis.Symbolic.Views;
     
    5454        double impactValue, replacementValue, newQualityForImpactsCalculation;
    5555        calculator.CalculateImpactAndReplacementValues(Content.Model, node, Content.ProblemData, Content.ProblemData.TrainingIndices, out impactValue, out replacementValue, out newQualityForImpactsCalculation);
     56        Progress.ProgressValue += 1.0 / (tree.Length - 2);
    5657        impactAndReplacementValues.Add(node, new Tuple<double, double>(impactValue, replacementValue));
    5758      }
     
    5960    }
    6061
    61     protected override void btnOptimizeConstants_Click(object sender, EventArgs e) {
     62    protected override async void btnOptimizeConstants_Click(object sender, EventArgs e) {
     63      const int constOptIterations = 50;
    6264      var model = Content.Model;
    63       SymbolicRegressionConstantOptimizationEvaluator.OptimizeConstants(model.Interpreter, model.SymbolicExpressionTree, Content.ProblemData, Content.ProblemData.TrainingIndices,
    64         applyLinearScaling: true, maxIterations: 50, updateVariableWeights: true, lowerEstimationLimit: model.LowerEstimationLimit, upperEstimationLimit: model.UpperEstimationLimit);
    65       UpdateModel(Content.Model.SymbolicExpressionTree);
     65      Progress.Start("Optimizing Constants ...", 0);
     66      await Task.Run(() => {
     67        SymbolicRegressionConstantOptimizationEvaluator.OptimizeConstants(model.Interpreter, model.SymbolicExpressionTree, Content.ProblemData, Content.ProblemData.TrainingIndices,
     68          applyLinearScaling: true, maxIterations: constOptIterations, updateVariableWeights: true, lowerEstimationLimit: model.LowerEstimationLimit, upperEstimationLimit: model.UpperEstimationLimit,
     69          iterationReport: (args, func, iter) => {
     70            Progress.ProgressValue = (double)iter / (constOptIterations + 1); // (maxIterations + 1) iterations are reported
     71          });
     72      });
     73      UpdateModel(Content.Model.SymbolicExpressionTree); // UpdateModel calls Progress.Finish
    6674    }
    6775  }
Note: See TracChangeset for help on using the changeset viewer.