Index: /branches/3076_IA_evaluators_analyzers/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression-3.4.csproj
===================================================================
--- /branches/3076_IA_evaluators_analyzers/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression-3.4.csproj	(revision 17765)
+++ /branches/3076_IA_evaluators_analyzers/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression-3.4.csproj	(revision 17766)
@@ -211,4 +211,5 @@
     <Compile Include="SymbolicRegressionSolution.cs" />
     <Compile Include="SymbolicRegressionSolutionImpactValuesCalculator.cs" />
+    <None Include=".editorconfig" />
     <None Include="HeuristicLab.snk" />
     <None Include="Plugin.cs.frame" />
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 17765)
+++ /branches/3076_IA_evaluators_analyzers/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SymbolicRegressionConstraintAnalyzer.cs	(revision 17766)
@@ -17,26 +17,34 @@
   [StorableType("4318C6BD-E0A1-45FE-AC30-96E7F73B51FB")]
   public class SymbolicRegressionConstraintAnalyzer : SymbolicDataAnalysisAnalyzer, ISymbolicExpressionTreeAnalyzer {
-    private const string ConstraintViolationsResultName   = "Constraint Violations";
-    private const string ProblemDataParameterName         = "ProblemData";
+    private const string ConstraintViolationsResultName = "Constraint Violations";
+    private const string ProblemDataParameterName = "ProblemData";
     private const string ConstraintViolationParameterName = "ConstraintViolations";
     private const string PenalityMultiplierParameterName = "ConstraintsPenalityMultiplier";
     private const string PenalityMultiplierResultParameterName = "PenalityMultiplierResultParameter";
     private const string StepSizeParameterName = "Step Size";
+    private const string MaximumStepsParameterName = "Maximum Steps";
+    private const string StartPenalityParameterName = "Start Penality";
 
     #region parameter properties
 
     public ILookupParameter<IRegressionProblemData> RegressionProblemDataParameter =>
-      (ILookupParameter<IRegressionProblemData>) Parameters[ProblemDataParameterName];
+      (ILookupParameter<IRegressionProblemData>)Parameters[ProblemDataParameterName];
 
     public IResultParameter<DataTable> ConstraintViolationParameter =>
-      (IResultParameter<DataTable>) Parameters[ConstraintViolationParameterName];
+      (IResultParameter<DataTable>)Parameters[ConstraintViolationParameterName];
 
     public ILookupParameter<DoubleValue> PenalityMultiplierParameter =>
       (ILookupParameter<DoubleValue>)Parameters[PenalityMultiplierParameterName];
+
     public IValueParameter<IntValue> StepSizeParameter =>
       (IValueParameter<IntValue>)Parameters[StepSizeParameterName];
 
+    public IValueParameter<IntValue> MaximumStepsParameter =>
+      (IValueParameter<IntValue>)Parameters[MaximumStepsParameterName];
+
     public IResultParameter<DataTable> PenalityMultiplierResultParameter =>
       (IResultParameter<DataTable>)Parameters[PenalityMultiplierResultParameterName];
+    public IValueParameter<DoubleValue> StartPenalityParameter =>
+      (IValueParameter<DoubleValue>)Parameters[StartPenalityParameterName];
 
     #endregion
@@ -66,7 +74,14 @@
       Parameters.Add(new ValueParameter<IntValue>(StepSizeParameterName,
         "Defines the step size for the increasing penality multiplier.", new IntValue(1)));
+      Parameters.Add(new ValueParameter<IntValue>(MaximumStepsParameterName,
+        "Defines maximum steps for the increasing penality multiplier.", new IntValue(1000)));
+      Parameters.Add(new ValueParameter<DoubleValue>(StartPenalityParameterName,
+        "The start value for the penality multiplier.", new DoubleValue(0.5)));
+
+
+
 
       ConstraintViolationParameter.DefaultValue = new DataTable(ConstraintViolationParameterName) {
-        VisualProperties = 
+        VisualProperties =
           {
             XAxisTitle = "Generations",
@@ -75,6 +90,5 @@
       };
 
-      PenalityMultiplierResultParameter.DefaultValue = new DataTable(PenalityMultiplierResultParameterName)
-      {
+      PenalityMultiplierResultParameter.DefaultValue = new DataTable(PenalityMultiplierResultParameterName) {
         VisualProperties =
           {
@@ -85,12 +99,10 @@
     }
 
-    public override void InitializeState()
-    {
+    public override void InitializeState() {
       Iterations = 0;
       base.InitializeState();
     }
 
-    public override void ClearState()
-    {
+    public override void ClearState() {
       Iterations = 0;
       base.ClearState();
@@ -104,11 +116,9 @@
         "Lookup parameter for the penality multiplier.", "PenalityMultiplier"));
 
-      if (!Parameters.ContainsKey(PenalityMultiplierResultParameterName))
-      {
+      if (!Parameters.ContainsKey(PenalityMultiplierResultParameterName)) {
         Parameters.Add(new ResultParameter<DataTable>(PenalityMultiplierResultParameterName,
         "Shows the behavior of the penality multiplier."));
 
-        PenalityMultiplierResultParameter.DefaultValue = new DataTable(PenalityMultiplierResultParameterName)
-        {
+        PenalityMultiplierResultParameter.DefaultValue = new DataTable(PenalityMultiplierResultParameterName) {
           VisualProperties =
           {
@@ -123,12 +133,22 @@
         "Defines the step size for the increasing penality multiplier.", new IntValue(1)));
 
-    }
-
-    public override IOperation Apply()
-    {
+      if (!Parameters.ContainsKey(MaximumStepsParameterName))
+        Parameters.Add(new ValueParameter<IntValue>(MaximumStepsParameterName,
+        "Defines maximum steps for the increasing penality multiplier.", new IntValue(1000)));
+
+
+
+      if (!Parameters.ContainsKey(StartPenalityParameterName))
+        Parameters.Add(new ValueParameter<DoubleValue>(StartPenalityParameterName,
+        "The start value for the penality multiplier.", new DoubleValue(0.5)));
+    }
+
+    public override IOperation Apply() {
       Iterations++;
       var rowName = "GeneralizedExponentialDiscreteDoubleValueModifier";
       var stepSize = StepSizeParameter?.Value?.Value ?? 1;
-      var penalityMultiplier = new DoubleValue(LinearDiscreteDoubleValueModifier.Apply(0, 0.1, 1.0, (int)(Iterations / stepSize) * stepSize, 0, 1000));
+      var startValue = StartPenalityParameter?.Value?.Value ?? 0.5;
+      var maximumSteps = MaximumStepsParameter?.Value?.Value ?? 1000;
+      var penalityMultiplier = new DoubleValue(LinearDiscreteDoubleValueModifier.Apply(0, startValue, 1.0, (int)(Iterations / stepSize) * stepSize, 0, maximumSteps));
       PenalityMultiplierParameter.ActualValue = penalityMultiplier;
       //GeneralizedExponentialDiscreteDoubleValueModifier
@@ -137,10 +157,10 @@
 
       var problemData = RegressionProblemDataParameter.ActualValue;
-      var trees       = SymbolicExpressionTreeParameter.ActualValue;
-
-      var results        = ResultCollectionParameter.ActualValue;
-      var constraints    = problemData.IntervalConstraints.EnabledConstraints;
+      var trees = SymbolicExpressionTreeParameter.ActualValue;
+
+      var results = ResultCollectionParameter.ActualValue;
+      var constraints = problemData.IntervalConstraints.EnabledConstraints;
       var variableRanges = problemData.VariableRanges.GetReadonlyDictionary();
-      var newDataTable   = ConstraintViolationParameter.ActualValue;
+      var newDataTable = ConstraintViolationParameter.ActualValue;
 
       if (newDataTable.Rows.Count == 0)
@@ -177,12 +197,9 @@
       // create new variable ranges for defined regions
       IDictionary<string, Interval> regionRanges = new Dictionary<string, Interval>();
-      foreach (var kvp in variableRanges)
-      {
-        if (kvp.Key != constraint.Target && constraint.Regions.TryGetValue(kvp.Key, out Interval val))
-        {
-          regionRanges.Add(kvp.Key, val);
-        }
-        else
-        {
+      foreach (var kvp in variableRanges) {
+        var value = constraint.Regions.Where(r => r.VariableName == kvp.Key).FirstOrDefault();
+        if (kvp.Key != constraint.Target && value != null) {
+          regionRanges.Add(kvp.Key, value.Interval);
+        } else {
           regionRanges.Add(kvp);
         }
@@ -192,6 +209,5 @@
       if (!constraint.IsDerivative) {
         resultInterval = intervalInterpreter.GetSymbolicExpressionTreeInterval(solution, new ReadOnlyDictionary<string, Interval>(regionRanges));
-      }
-      else {
+      } else {
         var tree = solution;
         for (var i = 0; i < constraint.NumberOfDerivations; ++i) {
@@ -206,12 +222,10 @@
       error = 0.0;
       bool satisfied = true;
-      if(!constraint.Interval.Contains(resultInterval.LowerBound))
-      {
+      if (!constraint.Interval.Contains(resultInterval.LowerBound)) {
         satisfied = false;
         error += Math.Abs(resultInterval.LowerBound - constraint.Interval.LowerBound);
       }
 
-      if (!constraint.Interval.Contains(resultInterval.UpperBound))
-      {
+      if (!constraint.Interval.Contains(resultInterval.UpperBound)) {
         satisfied = false;
         error += Math.Abs(resultInterval.UpperBound - constraint.Interval.UpperBound);
