Index: /branches/3076_IA_evaluators_analyzers/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SingleObjective/Evaluators/SymbolicRegressionSingleObjectiveConstraintConstOptNmseEvaluator.cs
===================================================================
--- /branches/3076_IA_evaluators_analyzers/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SingleObjective/Evaluators/SymbolicRegressionSingleObjectiveConstraintConstOptNmseEvaluator.cs	(revision 17750)
+++ /branches/3076_IA_evaluators_analyzers/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SingleObjective/Evaluators/SymbolicRegressionSingleObjectiveConstraintConstOptNmseEvaluator.cs	(revision 17751)
@@ -115,5 +115,5 @@
       var boundedEstimatedValues = estimatedValues.LimitToRange(lowerEstimationLimit, upperEstimationLimit);
       var nmse = OnlineNormalizedMeanSquaredErrorCalculator.Calculate(targetValues, boundedEstimatedValues, out var errorState);
-      if (!SymbolicRegressionConstraintAnalyzer.ConstraintsSatisfied(constraints, variableRanges, solution, out double error))
+      if (!SymbolicRegressionConstraintAnalyzer.ConstraintsSatisfied(constraints, variableRanges, solution, false, out double error))
       {
         if (double.IsNaN(error) || double.IsInfinity(error))
Index: /branches/3076_IA_evaluators_analyzers/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SingleObjective/Evaluators/SymbolicRegressionSingleObjectiveConstraintEvaluator.cs
===================================================================
--- /branches/3076_IA_evaluators_analyzers/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SingleObjective/Evaluators/SymbolicRegressionSingleObjectiveConstraintEvaluator.cs	(revision 17750)
+++ /branches/3076_IA_evaluators_analyzers/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SingleObjective/Evaluators/SymbolicRegressionSingleObjectiveConstraintEvaluator.cs	(revision 17751)
@@ -1,3 +1,4 @@
 ﻿using System;
+using System.CodeDom;
 using System.Collections.Generic;
 using System.Linq;
@@ -26,4 +27,6 @@
     private const string PenaltyMultiplierParameterName = "Constraints Penalty Multiplier";
 
+    private const string UseIntervalSplittingParameterName = "Use Interval Splitting";
+
     public IFixedValueParameter<BoolValue> UseConstantOptimizationParameter =>
       (IFixedValueParameter<BoolValue>) Parameters[UseConstantOptimizationParameterName];
@@ -37,4 +40,7 @@
     public IFixedValueParameter<DoubleValue> PenaltyMultiplierParameter =>
       (IFixedValueParameter<DoubleValue>) Parameters[PenaltyMultiplierParameterName];
+
+    public IFixedValueParameter<BoolValue> UseIntervalSplittingParameter =>
+      (IFixedValueParameter<BoolValue>) Parameters[UseIntervalSplittingParameterName];
 
     public bool UseConstantOptimization {
@@ -56,4 +62,9 @@
       get => PenaltyMultiplierParameter.Value.Value;
       set => PenaltyMultiplierParameter.Value.Value = value;
+    }
+
+    public bool UseIntervalSplitting {
+      get => UseIntervalSplittingParameter.Value.Value;
+      set => UseIntervalSplittingParameter.Value.Value = value;
     }
 
@@ -80,4 +91,6 @@
       Parameters.Add(new FixedValueParameter<DoubleValue>(PenaltyMultiplierParameterName,
         "Specify how hard constraints violations should be punished", new DoubleValue(1.0)));
+      Parameters.Add(new FixedValueParameter<BoolValue>(UseIntervalSplittingParameterName,
+        "Define whether interval splitting is used or not.", new BoolValue(false)));
     }
 
@@ -103,4 +116,9 @@
           "Specify how hard constraints violations should be punished", new DoubleValue(1.0)));
       }
+
+      if (!Parameters.ContainsKey(UseIntervalSplittingParameterName)) {
+        Parameters.Add(new FixedValueParameter<BoolValue>(UseIntervalSplittingParameterName,
+          "Define whether interval splitting is used or not.", new BoolValue(false)));
+      }
     }
 
@@ -112,9 +130,9 @@
 
     public override IOperation InstrumentedApply() {
-      var rows               = GenerateRowsToEvaluate();
-      var solution           = SymbolicExpressionTreeParameter.ActualValue;
-      var problemData        = ProblemDataParameter.ActualValue;
-      var interpreter        = SymbolicDataAnalysisTreeInterpreterParameter.ActualValue;
-      var estimationLimits   = EstimationLimitsParameter.ActualValue;
+      var rows = GenerateRowsToEvaluate();
+      var solution = SymbolicExpressionTreeParameter.ActualValue;
+      var problemData = ProblemDataParameter.ActualValue;
+      var interpreter = SymbolicDataAnalysisTreeInterpreterParameter.ActualValue;
+      var estimationLimits = EstimationLimitsParameter.ActualValue;
       var applyLinearScaling = ApplyLinearScalingParameter.ActualValue.Value;
 
@@ -127,7 +145,7 @@
           //Check for interval arithmetic grammar
           //remove scaling nodes for linear scaling evaluation
-          var                    rootNode  = new ProgramRootSymbol().CreateTreeNode();
-          var                    startNode = new StartSymbol().CreateTreeNode();
-          SymbolicExpressionTree newTree   = null;
+          var rootNode = new ProgramRootSymbol().CreateTreeNode();
+          var startNode = new StartSymbol().CreateTreeNode();
+          SymbolicExpressionTree newTree = null;
           foreach (var node in solution.IterateNodesPrefix())
             if (node.Symbol.Name == "Scaling") {
@@ -140,5 +158,5 @@
           //calculate alpha and beta for scaling
           var estimatedValues = interpreter.GetSymbolicExpressionTreeValues(newTree, problemData.Dataset, rows);
-          var targetValues    = problemData.Dataset.GetDoubleValues(problemData.TargetVariable, rows);
+          var targetValues = problemData.Dataset.GetDoubleValues(problemData.TargetVariable, rows);
           OnlineLinearScalingParameterCalculator.Calculate(estimatedValues, targetValues, out var alpha, out var beta,
             out var errorState);
@@ -159,5 +177,5 @@
       var quality = Calculate(interpreter, solution, estimationLimits.Lower, estimationLimits.Upper, problemData, rows,
         UseSoftConstraints,
-        PenaltyMultiplier);
+        PenaltyMultiplier, UseIntervalSplitting);
       QualityParameter.ActualValue = new DoubleValue(quality);
 
@@ -170,15 +188,15 @@
       double upperEstimationLimit,
       IRegressionProblemData problemData, IEnumerable<int> rows, bool useSoftConstraints,
-      double penaltyMultiplier) {
+      double penaltyMultiplier, bool useSplitting) {
       var estimatedValues = interpreter.GetSymbolicExpressionTreeValues(solution, problemData.Dataset, rows);
-      var targetValues    = problemData.Dataset.GetDoubleValues(problemData.TargetVariable, rows);
-      var constraints     = problemData.IntervalConstraints.EnabledConstraints;
-      var variableRanges  = problemData.VariableRanges.GetReadonlyDictionary();
-      
+      var targetValues = problemData.Dataset.GetDoubleValues(problemData.TargetVariable, rows);
+      var constraints = problemData.IntervalConstraints.EnabledConstraints;
+      var variableRanges = problemData.VariableRanges.GetReadonlyDictionary();
+
       var boundedEstimatedValues = estimatedValues.LimitToRange(lowerEstimationLimit, upperEstimationLimit);
       var nmse = OnlineNormalizedMeanSquaredErrorCalculator.Calculate(targetValues, boundedEstimatedValues,
         out var errorState);
 
-      if (!SymbolicRegressionConstraintAnalyzer.ConstraintsSatisfied(constraints, variableRanges, solution,
+      if (!SymbolicRegressionConstraintAnalyzer.ConstraintsSatisfied(constraints, variableRanges, solution, useSplitting,
         out var error)) {
         if (useSoftConstraints) {
@@ -188,5 +206,5 @@
             nmse += penaltyMultiplier * error;
           }
-          
+
           nmse = Math.Min(1.0, nmse);
         } else {
@@ -206,14 +224,14 @@
       IEnumerable<int> rows) {
       SymbolicDataAnalysisTreeInterpreterParameter.ExecutionContext = context;
-      EstimationLimitsParameter.ExecutionContext                    = context;
-      ApplyLinearScalingParameter.ExecutionContext                  = context;
+      EstimationLimitsParameter.ExecutionContext = context;
+      ApplyLinearScalingParameter.ExecutionContext = context;
 
       var nmse = Calculate(SymbolicDataAnalysisTreeInterpreterParameter.ActualValue, tree,
         EstimationLimitsParameter.ActualValue.Lower, EstimationLimitsParameter.ActualValue.Upper,
-        problemData, rows, UseSoftConstraints, PenaltyMultiplier);
+        problemData, rows, UseSoftConstraints, PenaltyMultiplier, UseIntervalSplitting);
 
       SymbolicDataAnalysisTreeInterpreterParameter.ExecutionContext = null;
-      EstimationLimitsParameter.ExecutionContext                    = null;
-      ApplyLinearScalingParameter.ExecutionContext                  = null;
+      EstimationLimitsParameter.ExecutionContext = null;
+      ApplyLinearScalingParameter.ExecutionContext = null;
 
       return nmse;
Index: /branches/3076_IA_evaluators_analyzers/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SingleObjective/Evaluators/SymbolicRegressionSingleObjectiveConstraintScalingNmseEvaluator.cs
===================================================================
--- /branches/3076_IA_evaluators_analyzers/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SingleObjective/Evaluators/SymbolicRegressionSingleObjectiveConstraintScalingNmseEvaluator.cs	(revision 17750)
+++ /branches/3076_IA_evaluators_analyzers/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SingleObjective/Evaluators/SymbolicRegressionSingleObjectiveConstraintScalingNmseEvaluator.cs	(revision 17751)
@@ -85,5 +85,5 @@
       var variableRanges = problemData.VariableRanges.GetReadonlyDictionary();
 
-      if (!SymbolicRegressionConstraintAnalyzer.ConstraintsSatisfied(constraints, variableRanges, solution, out double error))
+      if (!SymbolicRegressionConstraintAnalyzer.ConstraintsSatisfied(constraints, variableRanges, solution, false, out double error))
         return 1.0;
 
Index: /branches/3076_IA_evaluators_analyzers/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SymbolicRegressionConstraintAnalyzer.cs
===================================================================
--- /branches/3076_IA_evaluators_analyzers/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SymbolicRegressionConstraintAnalyzer.cs	(revision 17750)
+++ /branches/3076_IA_evaluators_analyzers/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SymbolicRegressionConstraintAnalyzer.cs	(revision 17751)
@@ -191,5 +191,5 @@
       // calculate result interval
       if (!constraint.IsDerivative) {
-        resultInterval = intervalInterpreter.GetSymbolicExpressionTreeInterval(solution, new ReadOnlyDictionary<string, Interval>(regionRanges));
+        resultInterval = intervalInterpreter.GetSymbolicExpressionTreeInterval(solution, new ReadOnlyDictionary<string, Interval>(regionRanges), 0);
       }
       else {
@@ -201,5 +201,5 @@
         }
 
-        resultInterval = intervalInterpreter.GetSymbolicExpressionTreeInterval(tree, new ReadOnlyDictionary<string, Interval>(regionRanges));
+        resultInterval = intervalInterpreter.GetSymbolicExpressionTreeInterval(tree, new ReadOnlyDictionary<string, Interval>(regionRanges), 0);
       }
 
@@ -226,7 +226,7 @@
     public static bool ConstraintsSatisfied(IEnumerable<IntervalConstraint> constraints,
                                             IReadOnlyDictionary<string, Interval> variableRanges,
-                                            ISymbolicExpressionTree solution,
+                                            ISymbolicExpressionTree solution, bool useSplitting,
                                             out double error) {
-      var intervalInterpreter = new IntervalInterpreter();
+      var intervalInterpreter = new IntervalInterpreter() {UseIntervalSplitting = useSplitting};
       error = 0.0;
       var satisfied = true;
