Changeset 18163 for branches/2994-AutoDiffForIntervals/HeuristicLab.Problems.DataAnalysis.Regression.Symbolic.Extensions
- Timestamp:
- 12/21/21 08:51:49 (3 years ago)
- Location:
- branches/2994-AutoDiffForIntervals/HeuristicLab.Problems.DataAnalysis.Regression.Symbolic.Extensions
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2994-AutoDiffForIntervals/HeuristicLab.Problems.DataAnalysis.Regression.Symbolic.Extensions/ConstrainedNLSInternal.cs
r17328 r18163 43 43 44 44 public NLOpt.nlopt_result OptResult { get; private set; } 45 46 public int NumObjectiveFunctionEvaluations { get; private set; } 47 public int NumObjectiveGradientEvaluations { get; private set; } 48 public int NumConstraintEvaluations { get; private set; } 49 public int NumConstraintGradientEvaluations { get; private set; } 45 50 46 51 private bool disposed = false; … … 249 254 double minf = double.MaxValue; /* minimum objective value upon return */ 250 255 OptResult = NLOpt.nlopt_optimize(nlopt, x, ref minf); 251 256 252 257 if (OptResult < 0 && OptResult != NLOpt.nlopt_result.NLOPT_FORCED_STOP) { 253 258 // throw new InvalidOperationException($"NLOpt failed {res} {NLOpt.nlopt_get_errmsg(nlopt)}"); … … 294 299 UpdateThetaValues(curX); 295 300 var sse = 0.0; 301 NumObjectiveFunctionEvaluations++; 296 302 297 303 if (grad != null) { 304 NumObjectiveGradientEvaluations++; 298 305 autoDiffEval.Evaluate(preparedTree, problemData.Dataset, trainingRows, 299 306 preparedTreeParameterNodes, fi_eval, jac_eval); … … 414 421 double CalculateConstraint(uint dim, double[] curX, double[] grad, IntPtr data) { 415 422 UpdateThetaValues(curX); 423 NumConstraintEvaluations++; 416 424 var intervalEvaluator = new IntervalEvaluator(); 417 425 var refIntervalEvaluator = new IntervalInterpreter(); … … 420 428 421 429 if (grad != null) Array.Clear(grad, 0, grad.Length); 430 if (grad != null) NumConstraintGradientEvaluations++; 422 431 423 432 var interval = intervalEvaluator.Evaluate(constraintData.Tree, dataIntervals, constraintData.ParameterNodes, -
branches/2994-AutoDiffForIntervals/HeuristicLab.Problems.DataAnalysis.Regression.Symbolic.Extensions/NLOptEvaluator.cs
r17328 r18163 210 210 constantOptimizationRows, ApplyLinearScalingParameter.ActualValue.Value, Solver, 211 211 out double qDiff, out double[] constraintsBefore, out double[] constraintsAfter, 212 ConstantOptimizationIterations.Value, updateVariableWeights: UpdateVariableWeights, lowerEstimationLimit: EstimationLimitsParameter.ActualValue.Lower, upperEstimationLimit: EstimationLimitsParameter.ActualValue.Upper, updateConstantsInTree: UpdateConstantsInTree, counter: counter); 212 ConstantOptimizationIterations.Value, updateVariableWeights: UpdateVariableWeights, 213 lowerEstimationLimit: EstimationLimitsParameter.ActualValue.Lower, upperEstimationLimit: EstimationLimitsParameter.ActualValue.Upper, 214 updateConstantsInTree: UpdateConstantsInTree, counter: counter); 213 215 214 216 AchievedQualityImprovementParameter.ActualValue = new DoubleValue(qDiff); … … 272 274 if (!updateConstantsInTree) throw new NotSupportedException("not updating tree parameters is not supported"); 273 275 if (!applyLinearScaling) throw new NotSupportedException("application without linear scaling is not supported"); 274 275 276 276 277 using (var state = new ConstrainedNLSInternal(solver, tree, maxIterations, problemData, 0, 0, 0)) { … … 282 283 if (constraintsAfter.Any(cv => cv > 1e-8)) qOpt = qBefore; 283 284 qDiff = qOpt - qBefore; 285 286 if(counter != null) { 287 counter.FunctionEvaluations += state.NumObjectiveFunctionEvaluations; 288 counter.GradientEvaluations += state.NumObjectiveGradientEvaluations; 289 } 290 284 291 return qOpt; 285 292 }
Note: See TracChangeset
for help on using the changeset viewer.