Changeset 17511 for branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SingleObjective
- Timestamp:
- 04/15/20 08:54:32 (5 years ago)
- Location:
- branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SingleObjective/Evaluators
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SingleObjective/Evaluators/SymbolicRegressionSingleObjectiveConstraintConstOptEvaluator.cs
r17506 r17511 61 61 var variableRanges = problemData.VariableRanges.GetIntervals(); 62 62 63 if (!SymbolicRegressionConstraintAnalyzer.ConstraintsSatisfied(constraints, variableRanges, tree)) { 64 return 0; 65 } 66 63 67 var r2 = SymbolicRegressionConstantOptimizationEvaluator.OptimizeConstants(interpreter, tree, problemData, problemData.TrainingIndices, applyLinearScaling, 10); 64 if (!SymbolicRegressionConstraintAnalyzer.ConstraintsSatisfied(constraints, variableRanges, tree)) {65 r2 = 0;66 }67 68 return r2; 68 69 } … … 85 86 return r2; 86 87 } 87 88 private static bool HasConstraintVioluations(IEnumerable<IntervalConstraint> constraints, IntervalInterpreter intervalInterpreter,89 IDictionary<string, Interval> variableRanges, ISymbolicExpressionTree solution) {90 foreach (var constraint in constraints) {91 if (constraint.Variable != null && !variableRanges.ContainsKey(constraint.Variable))92 throw new ArgumentException($"The given variable {constraint.Variable} in the constraint does not exists in the model.", nameof(IntervalConstraintsParser));93 if (!constraint.IsDerivative) {94 var res = intervalInterpreter.GetSymbolicExpressionTreeInterval(solution, variableRanges);95 if (!constraint.Interval.Contains(res)) {96 return true;97 }98 } else {99 var tree = solution;100 for (var i = 0; i < constraint.NumberOfDerivations; ++i) {101 tree = DerivativeCalculator.Derive(tree, constraint.Variable);102 }103 var res = intervalInterpreter.GetSymbolicExpressionTreeInterval(tree, variableRanges);104 if (!constraint.Interval.Contains(res)) {105 return true;106 }107 }108 }109 return false;110 }111 88 } 112 89 } -
branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SingleObjective/Evaluators/SymbolicRegressionSingleObjectiveConstraintPearsonRSquaredEvaluator.cs
r17504 r17511 62 62 var tree = solution; 63 63 64 double r;65 if (applyLinearScaling) {66 var rCalculator = new OnlinePearsonsRCalculator();67 CalculateWithScaling(targetValues, estimatedValues, lowerEstimationLimit, upperEstimationLimit, rCalculator, problemData.Dataset.Rows);68 var model = new SymbolicRegressionModel(problemData.TargetVariable, solution, interpreter, lowerEstimationLimit, upperEstimationLimit);69 model.Scale(problemData);70 tree = model.SymbolicExpressionTree;71 errorState = rCalculator.ErrorState;72 r = rCalculator.R;73 } else {74 IEnumerable<double> boundedEstimatedValues = estimatedValues.LimitToRange(lowerEstimationLimit, upperEstimationLimit);75 r = OnlinePearsonsRCalculator.Calculate(targetValues, boundedEstimatedValues, out errorState);76 }77 78 64 if (!SymbolicRegressionConstraintAnalyzer.ConstraintsSatisfied(constraints, variableRanges, tree)) { 79 65 return 0; 80 66 } 81 67 82 if (errorState != OnlineCalculatorError.None) return double.NaN; 83 return r * r; 68 var r2 = SymbolicRegressionSingleObjectivePearsonRSquaredEvaluator.Calculate(interpreter, solution, lowerEstimationLimit, 69 upperEstimationLimit, problemData, rows, applyLinearScaling); 70 71 return r2; 84 72 } 85 73
Note: See TracChangeset
for help on using the changeset viewer.