} // maximize R² and minimize average similarity public override IOperation InstrumentedApply() { IEnumerable <int> rows = GenerateRowsToEvaluate(); var solution = SymbolicExpressionTreeParameter.ActualValue; var problemData = ProblemDataParameter.ActualValue; var interpreter = SymbolicDataAnalysisTreeInterpreterParameter.ActualValue; var estimationLimits = EstimationLimitsParameter.ActualValue; var applyLinearScaling = ApplyLinearScalingParameter.ActualValue.Value; if (UseConstantOptimization) { SymbolicRegressionConstantOptimizationEvaluator.OptimizeConstants(interpreter, solution, problemData, rows, applyLinearScaling, ConstantOptimizationIterations, updateVariableWeights: ConstantOptimizationUpdateVariableWeights, lowerEstimationLimit: estimationLimits.Lower, upperEstimationLimit: estimationLimits.Upper); } double r2 = SymbolicRegressionSingleObjectivePearsonRSquaredEvaluator.Calculate(interpreter, solution, estimationLimits.Lower, estimationLimits.Upper, problemData, rows, applyLinearScaling); if (DecimalPlaces >= 0) { r2 = Math.Round(r2, DecimalPlaces); } lock (locker) { if (AverageSimilarityParameter.ActualValue == null) { var context = new ExecutionContext(null, SimilarityCalculator, ExecutionContext.Scope.Parent); SimilarityCalculator.StrictSimilarity = StrictSimilarity; SimilarityCalculator.Execute(context, CancellationToken); } } var avgSimilarity = AverageSimilarityParameter.ActualValue.Value; QualitiesParameter.ActualValue = new DoubleArray(new[] { r2, avgSimilarity }); return(base.InstrumentedApply()); }
} // maximize R² and minimize model complexity public override IOperation InstrumentedApply() { IEnumerable <int> rows = GenerateRowsToEvaluate(); var solution = SymbolicExpressionTreeParameter.ActualValue; var problemData = ProblemDataParameter.ActualValue; var interpreter = SymbolicDataAnalysisTreeInterpreterParameter.ActualValue; var estimationLimits = EstimationLimitsParameter.ActualValue; var applyLinearScaling = ApplyLinearScalingParameter.ActualValue.Value; if (UseConstantOptimization) { SymbolicRegressionConstantOptimizationEvaluator.OptimizeConstants(interpreter, solution, problemData, rows, applyLinearScaling, ConstantOptimizationIterations, updateVariableWeights: ConstantOptimizationUpdateVariableWeights, lowerEstimationLimit: estimationLimits.Lower, upperEstimationLimit: estimationLimits.Upper); } double[] qualities = Calculate(interpreter, solution, estimationLimits.Lower, estimationLimits.Upper, problemData, rows, applyLinearScaling, DecimalPlaces); QualitiesParameter.ActualValue = new DoubleArray(qualities); return(base.InstrumentedApply()); }
protected SymbolicRegressionConstantOptimizationEvaluator(SymbolicRegressionConstantOptimizationEvaluator original, Cloner cloner) : base(original, cloner) { }
protected SymbolicRegressionConstantOptimizationEvaluator(SymbolicRegressionConstantOptimizationEvaluator original, Cloner cloner) : base(original, cloner) { }