Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
12/16/21 14:23:48 (2 years ago)
Author:
mkommend
Message:

#3136: Merged trunk changes into branch.

Location:
branches/3136_Structural_GP
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/3136_Structural_GP

  • branches/3136_Structural_GP/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression

  • branches/3136_Structural_GP/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4

  • branches/3136_Structural_GP/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SingleObjective/Evaluators/NMSESingleObjectiveConstraintsEvaluator.cs

    r18104 r18146  
    4646      (IFixedValueParameter<BoolValue>)Parameters[OptimizeParametersParameterName];
    4747
    48     public IFixedValueParameter<IntValue> ConstantOptimizationIterationsParameter =>
     48    public IFixedValueParameter<IntValue> ParameterOptimizationIterationsParameter =>
    4949      (IFixedValueParameter<IntValue>)Parameters[ParameterOptimizationIterationsParameterName];
    5050
     
    6262    }
    6363
    64     public int ConstantOptimizationIterations {
    65       get => ConstantOptimizationIterationsParameter.Value.Value;
    66       set => ConstantOptimizationIterationsParameter.Value.Value = value;
     64    public int ParameterOptimizationIterations {
     65      get => ParameterOptimizationIterationsParameter.Value.Value;
     66      set => ParameterOptimizationIterationsParameter.Value.Value = value;
    6767    }
    6868
     
    9797    public NMSESingleObjectiveConstraintsEvaluator() {
    9898      Parameters.Add(new FixedValueParameter<BoolValue>(OptimizeParametersParameterName,
    99         "Define whether optimization of numeric parameters is active or not (default: false).", new BoolValue(false)));
     99        "Define whether optimization of parameters is active or not (default: false).", new BoolValue(false)));
    100100      Parameters.Add(new FixedValueParameter<IntValue>(ParameterOptimizationIterationsParameterName,
    101101        "Define how many parameter optimization steps should be performed (default: 10).", new IntValue(10)));
     
    132132
    133133    private static void CalcLinearScalingTerms(
    134       ISymbolicExpressionTree tree, 
     134      ISymbolicExpressionTree tree,
    135135      IRegressionProblemData problemData,
    136       IEnumerable<int> rows, 
     136      IEnumerable<int> rows,
    137137      ISymbolicDataAnalysisExpressionTreeInterpreter interpreter) {
    138138      var rootNode = new ProgramRootSymbol().CreateTreeNode();
     
    141141                            .GetSubtree(0); //Offset
    142142      var scaling = offset.GetSubtree(0);
    143      
     143
    144144      //Check if tree contains offset and scaling nodes
    145145      if (!(offset.Symbol is Addition) || !(scaling.Symbol is Multiplication))
    146         throw new ArgumentException($"Shape Constraints Evaluation can only be used with LinearScalingGrammar.");
     146        throw new ArgumentException($"Scaling can only be used with LinearScalingGrammar.");
    147147
    148148      var t = (ISymbolicExpressionTreeNode)scaling.GetSubtree(0).Clone();
     
    155155
    156156      var targetValues = problemData.Dataset.GetDoubleValues(problemData.TargetVariable, rows);
    157       OnlineLinearScalingParameterCalculator.Calculate(estimatedValues, targetValues, out var alpha, out var beta, out var errorState);
     157      OnlineLinearScalingParameterCalculator.Calculate(estimatedValues, targetValues, out var alpha, out var beta,
     158        out var errorState);
     159
    158160      if (errorState == OnlineCalculatorError.None) {
    159         //Set alpha and beta to the scaling nodes from ia grammar
    160         var offsetParameter = offset.GetSubtree(1) as ConstantTreeNode;
     161        //Set alpha and beta to the scaling nodes from grammar
     162        var offsetParameter = offset.GetSubtree(1) as NumberTreeNode;
    161163        offsetParameter.Value = alpha;
    162         var scalingParameter = scaling.GetSubtree(1) as ConstantTreeNode;
     164        var scalingParameter = scaling.GetSubtree(1) as NumberTreeNode;
    163165        scalingParameter.Value = beta;
    164166      }
     
    193195      if (constraintViolations.Any(x => double.IsNaN(x) || double.IsInfinity(x)))
    194196        return 1.0;
    195      
     197
    196198      // hard constraints
    197199      if (!useSoftConstraints) {
     
    220222
    221223      var nmse = Calculate(
    222         tree, problemData, rows, 
     224        tree, problemData, rows,
    223225        SymbolicDataAnalysisTreeInterpreterParameter.ActualValue,
    224         EstimationLimitsParameter.ActualValue.Lower, 
     226        EstimationLimitsParameter.ActualValue.Lower,
    225227        EstimationLimitsParameter.ActualValue.Upper,
    226         BoundsEstimator, 
    227         UseSoftConstraints, 
     228        BoundsEstimator,
     229        UseSoftConstraints,
    228230        PenalityFactor);
    229231
     
    245247
    246248      if (OptimizeParameters)
    247         SymbolicRegressionConstantOptimizationEvaluator.OptimizeConstants(
    248           interpreter, tree, 
     249        SymbolicRegressionParameterOptimizationEvaluator.OptimizeParameters(
     250          interpreter, tree,
    249251          problemData, rows,
    250252          applyLinearScaling: false, // Tree already contains scaling terms
    251           ConstantOptimizationIterations,
     253          ParameterOptimizationIterations,
    252254          updateVariableWeights: true,
    253           lowerEstimationLimit, 
     255          lowerEstimationLimit,
    254256          upperEstimationLimit);
    255      
     257
    256258      else if (applyLinearScaling) // extra scaling terms, which are included in tree
    257         CalcLinearScalingTerms(tree, problemData, rows, interpreter); 
    258      
     259        CalcLinearScalingTerms(tree, problemData, rows, interpreter);
     260
    259261      return Calculate(
    260262        tree, problemData,
    261         rows, interpreter, 
    262         lowerEstimationLimit, 
    263         upperEstimationLimit, 
     263        rows, interpreter,
     264        lowerEstimationLimit,
     265        upperEstimationLimit,
    264266        BoundsEstimator,
    265267        UseSoftConstraints,
Note: See TracChangeset for help on using the changeset viewer.