Index: branches/3073_IA_constraint_splitting/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Interval/IntervalConstraint.cs
===================================================================
--- branches/3073_IA_constraint_splitting/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Interval/IntervalConstraint.cs	(revision 17723)
+++ branches/3073_IA_constraint_splitting/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Interval/IntervalConstraint.cs	(revision 17728)
@@ -130,14 +130,30 @@
     }
 
+    [Storable]
+    private double weight = 1.0;
+    public double Weight
+    {
+      get => weight;
+      set
+      {
+        if(weight != value)
+        {
+          weight = value;
+          UpdateExpression();
+          OnChanged();
+        }
+      }
+    }
+
     [StorableConstructor]
     private IntervalConstraint(StorableConstructorFlag _) : base(_) { }
 
     public IntervalConstraint(string   expression, string variable, string target, int numberOfDerivations,
-                              Interval interval,   bool   enabled) 
+                              Interval interval, double weight, bool enabled) 
       : this(expression, variable, target, numberOfDerivations, 
-             interval, new Dictionary<string, Interval>(), enabled) { }
+             interval, new Dictionary<string, Interval>(), weight, enabled) { }
 
     public IntervalConstraint(string expression, string variable, string target, int numberOfDerivations,
-                              Interval interval, IDictionary<string, Interval> regions, bool enabled)
+                              Interval interval, IDictionary<string, Interval> regions, double weight, bool enabled)
     {
       this.expression = expression;
@@ -147,4 +163,5 @@
       this.interval = interval;
       this.regions = regions;
+      this.weight = weight;
       this.enabled = enabled;
     }
Index: branches/3073_IA_constraint_splitting/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Interval/IntervalConstraintsParser.cs
===================================================================
--- branches/3073_IA_constraint_splitting/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Interval/IntervalConstraintsParser.cs	(revision 17723)
+++ branches/3073_IA_constraint_splitting/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Interval/IntervalConstraintsParser.cs	(revision 17728)
@@ -46,5 +46,5 @@
           var targetConstraint = trimmedLine.Substring(start, end - start);
 
-          var match = 
+          var match =
           Regex.Match(targetConstraint,
                         @"(['](.*)[']|(.*[^\s]))" +
@@ -62,8 +62,10 @@
                           @"(\S*)\s*" + // 15: region upper bound
                           @"([)])" +
-                        @")*");
+                        @")*" +
+                        @"\s*(<(\S*)>)?"); // 17, 18
+
           
           if (match.Success) {
-            if (match.Groups.Count < 9) throw new ArgumentException("The target-constraint is not complete.", line);
+            if (match.Groups.Count < 19) throw new ArgumentException("The target-constraint is not complete.", line);
 
             var targetVariable = match.Groups[1].Value.Trim();
@@ -84,4 +86,8 @@
             var numberOfDerivation = 0;
             var interval           = new Interval(lowerBound, upperBound);
+            var weight = 1.0;
+
+            if (match.Groups[18].Success && !string.IsNullOrWhiteSpace(match.Groups[18].Value))
+              weight = ParseWeight(match.Groups[18].Value);
 
             if (match.Groups[10].Success)
@@ -96,14 +102,11 @@
                 pairs.Add(inputVar, new Interval(regionLb, regionUb));
               }
-              yield return new IntervalConstraint(expression, variable, parsedTarget, numberOfDerivation, interval, pairs, isEnabled);
+              yield return new IntervalConstraint(expression, variable, parsedTarget, numberOfDerivation, interval, pairs, weight, isEnabled);
             }
             else
-            {
-              yield return new IntervalConstraint(expression, variable, parsedTarget, numberOfDerivation, interval, isEnabled);
-            }
+              yield return new IntervalConstraint(expression, variable, parsedTarget, numberOfDerivation, interval, weight, isEnabled);
           }
-          else {
+          else
             throw new ArgumentException("The inserted target constraint is not valid.", line);
-          }
 
           //Check for derivation
@@ -130,8 +133,9 @@
                                       @"(\S*)\s*" + // 22: region upper bound
                                       @"([)])" +
-                                    @")*");
+                                    @")*" +
+                                    @"\s*(<(\S*)>)?"); // 24, 25
 
           if (match.Success) {
-            if (match.Groups.Count < 24)
+            if (match.Groups.Count < 26)
               throw new ArgumentException("The given derivation-constraint is not complete.", line);
 
@@ -169,4 +173,8 @@
             var numberOfDerivation = ParseDerivationCount(match.Groups[2].Value.Trim());
             var interval           = new Interval(lowerBound, upperBound);
+            var weight             = 1.0;
+
+            if(match.Groups[25].Success && !string.IsNullOrWhiteSpace(match.Groups[25].Value))
+              weight = ParseWeight(match.Groups[25].Value);
 
             if(match.Groups[17].Success)
@@ -181,12 +189,10 @@
                 pairs.Add(inputVar, new Interval(regionLb, regionUb));
               }
-              yield return new IntervalConstraint(expression, variable, parsedTarget, numberOfDerivation, interval, pairs, isEnabled);
-            } else {
-              yield return new IntervalConstraint(expression, variable, parsedTarget, numberOfDerivation, interval, isEnabled);
-            }
+              yield return new IntervalConstraint(expression, variable, parsedTarget, numberOfDerivation, interval, pairs, weight, isEnabled);
+            } else
+              yield return new IntervalConstraint(expression, variable, parsedTarget, numberOfDerivation, interval, weight, isEnabled);
           }
-          else {
+          else
             throw new ArgumentException("The inserted derivation constraint is not valid.", line);
-          }
 
           //Check for comment
@@ -219,4 +225,11 @@
     }
 
+    private static double ParseWeight(string input)
+    {
+      if (double.TryParse(input, NumberStyles.Any, CultureInfo.InvariantCulture, out var value))
+        return value;
+      throw new ArgumentException("The given weight is not a double value!");
+    }
+
     private static int ParseDerivationCount(string input) {
       switch (input) {
