Index: /branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/MultiDepotVRP/MDCVRP/MDCVRPProblemInstance.cs
===================================================================
--- /branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/MultiDepotVRP/MDCVRP/MDCVRPProblemInstance.cs	(revision 7863)
+++ /branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/MultiDepotVRP/MDCVRP/MDCVRPProblemInstance.cs	(revision 7864)
@@ -50,14 +50,17 @@
     }
 
-    [Storable]
-    private DoubleValue currentOverloadPenalty;
+    protected IValueParameter<DoubleValue> CurrentOverloadPenaltyParameter {
+      get { return (IValueParameter<DoubleValue>)Parameters["CurrentOverloadPenalty"]; }
+    }
 
     public DoubleValue OverloadPenalty {
       get {
+        DoubleValue currentOverloadPenalty = CurrentOverloadPenaltyParameter.Value;
         if (currentOverloadPenalty != null)
           return currentOverloadPenalty;
         else
-          return OverloadPenaltyParameter.Value; }
-      set { currentOverloadPenalty = value; }
+          return OverloadPenaltyParameter.Value;
+      }
+      set { CurrentOverloadPenaltyParameter.Value = value; }
     }
 
@@ -85,4 +88,5 @@
       Parameters.Add(new ValueParameter<DoubleArray>("Capacity", "The capacity of each vehicle.", new DoubleArray()));
       Parameters.Add(new ValueParameter<DoubleValue>("EvalOverloadPenalty", "The overload penalty considered in the evaluation.", new DoubleValue(100)));
+      Parameters.Add(new OptionalValueParameter<DoubleValue>("CurrentOverloadPenalty", "The current overload penalty considered in the evaluation."));
 
       AttachEventHandlers();
@@ -95,6 +99,4 @@
     protected MDCVRPProblemInstance(MDCVRPProblemInstance original, Cloner cloner)
       : base(original, cloner) {
-        currentOverloadPenalty = cloner.Clone(original.currentOverloadPenalty) as DoubleValue;
-
         AttachEventHandlers();
     }
@@ -114,5 +116,5 @@
       base.InitializeState();
 
-      currentOverloadPenalty = null;
+      CurrentOverloadPenaltyParameter.Value = null;
     }
 
Index: /branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/MultiDepotVRP/MDCVRP/MDCVRPTW/MDCVRPPDTW/MDCVRPPDTWProblemInstance.cs
===================================================================
--- /branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/MultiDepotVRP/MDCVRP/MDCVRPTW/MDCVRPPDTW/MDCVRPPDTWProblemInstance.cs	(revision 7863)
+++ /branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/MultiDepotVRP/MDCVRP/MDCVRPTW/MDCVRPPDTW/MDCVRPPDTWProblemInstance.cs	(revision 7864)
@@ -50,9 +50,11 @@
     }
 
-    [Storable]
-    private DoubleValue currentPickupViolationPenalty;
+    protected IValueParameter<DoubleValue> CurrentPickupViolationPenaltyParameter {
+      get { return (IValueParameter<DoubleValue>)Parameters["CurrentPickupViolationPenalty"]; }
+    }
 
     public DoubleValue PickupViolationPenalty {
       get {
+        DoubleValue currentPickupViolationPenalty = CurrentPickupViolationPenaltyParameter.Value;
         if (currentPickupViolationPenalty != null)
           return currentPickupViolationPenalty;
@@ -60,5 +62,5 @@
           return PickupViolationPenaltyParameter.Value;
       }
-      set { currentPickupViolationPenalty = value; }
+      set { CurrentPickupViolationPenaltyParameter.Value = value; }
     }
 
@@ -93,4 +95,5 @@
 
       Parameters.Add(new ValueParameter<DoubleValue>("EvalPickupViolationPenalty", "The pickup violation penalty considered in the evaluation.", new DoubleValue(100)));
+      Parameters.Add(new OptionalValueParameter<DoubleValue>("CurrentPickupViolationPenalty", "The current pickup violation penalty considered in the evaluation."));
 
       AttachEventHandlers();
@@ -103,6 +106,4 @@
     protected MDCVRPPDTWProblemInstance(MDCVRPPDTWProblemInstance original, Cloner cloner)
       : base(original, cloner) {
-        currentPickupViolationPenalty = cloner.Clone(original.currentPickupViolationPenalty) as DoubleValue;
-
         AttachEventHandlers();
     }
@@ -120,5 +121,5 @@
       base.InitializeState();
 
-      currentPickupViolationPenalty = null;
+      CurrentPickupViolationPenaltyParameter.Value = null;
     }
 
Index: /branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/MultiDepotVRP/MDCVRP/MDCVRPTW/MDCVRPTWProblemInstance.cs
===================================================================
--- /branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/MultiDepotVRP/MDCVRP/MDCVRPTW/MDCVRPTWProblemInstance.cs	(revision 7863)
+++ /branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/MultiDepotVRP/MDCVRP/MDCVRPTW/MDCVRPTWProblemInstance.cs	(revision 7864)
@@ -72,9 +72,11 @@
     }
 
-    [Storable]
-    private DoubleValue currentTardinessPenalty;
+    protected IValueParameter<DoubleValue> CurrentTardinessPenaltyParameter {
+      get { return (IValueParameter<DoubleValue>)Parameters["CurrentTardinessPenalty"]; }
+    }
 
     public DoubleValue TardinessPenalty {
       get {
+        DoubleValue currentTardinessPenalty = CurrentTardinessPenaltyParameter.Value;
         if (currentTardinessPenalty != null)
           return currentTardinessPenalty;
@@ -82,5 +84,5 @@
           return TardinessPenaltyParameter.Value;
       }
-      set { currentTardinessPenalty = value; }
+      set { CurrentTardinessPenaltyParameter.Value = value; }
     }
 
@@ -112,4 +114,5 @@
       Parameters.Add(new ValueParameter<DoubleValue>("EvalTimeFactor", "The time factor considered in the evaluation.", new DoubleValue(0)));
       Parameters.Add(new ValueParameter<DoubleValue>("EvalTardinessPenalty", "The tardiness penalty considered in the evaluation.", new DoubleValue(100)));
+      Parameters.Add(new OptionalValueParameter<DoubleValue>("CurrentTardinessPenalty", "The current tardiness penalty considered in the evaluation."));
 
       AttachEventHandlers();
@@ -122,6 +125,4 @@
     protected MDCVRPTWProblemInstance(MDCVRPTWProblemInstance original, Cloner cloner)
       : base(original, cloner) {
-        currentTardinessPenalty = cloner.Clone(original.currentTardinessPenalty) as DoubleValue;
-
         AttachEventHandlers();
     }
@@ -142,5 +143,5 @@
       base.InitializeState();
 
-      currentTardinessPenalty = null;
+      CurrentTardinessPenaltyParameter.Value = null;
     }
 
Index: /branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/SingleDepotVRP/CVRP/CVRPProblemInstance.cs
===================================================================
--- /branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/SingleDepotVRP/CVRP/CVRPProblemInstance.cs	(revision 7863)
+++ /branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/SingleDepotVRP/CVRP/CVRPProblemInstance.cs	(revision 7864)
@@ -50,14 +50,16 @@
     }
 
-    [Storable]
-    private DoubleValue currentOverloadPenalty;
+    protected IValueParameter<DoubleValue> CurrentOverloadPenaltyParameter {
+      get { return (IValueParameter<DoubleValue>)Parameters["CurrentOverloadPenalty"]; }
+    }
 
     public DoubleValue OverloadPenalty {
       get {
+        DoubleValue currentOverloadPenalty = CurrentOverloadPenaltyParameter.Value;
         if (currentOverloadPenalty != null)
           return currentOverloadPenalty;
         else
           return OverloadPenaltyParameter.Value; }
-      set { currentOverloadPenalty = value; }
+      set { CurrentOverloadPenaltyParameter.Value = value; }
     }
 
@@ -85,4 +87,5 @@
       Parameters.Add(new ValueParameter<DoubleValue>("Capacity", "The capacity of each vehicle.", new DoubleValue(0)));
       Parameters.Add(new ValueParameter<DoubleValue>("EvalOverloadPenalty", "The overload penalty considered in the evaluation.", new DoubleValue(100)));
+      Parameters.Add(new OptionalValueParameter<DoubleValue>("CurrentOverloadPenalty", "The current overload penalty considered in the evaluation."));
 
       AttachEventHandlers();
@@ -95,6 +98,4 @@
     protected CVRPProblemInstance(CVRPProblemInstance original, Cloner cloner)
       : base(original, cloner) {
-        currentOverloadPenalty = cloner.Clone(original.currentOverloadPenalty) as DoubleValue;
-
         AttachEventHandlers();
     }
@@ -115,5 +116,5 @@
       base.InitializeState();
 
-      currentOverloadPenalty = null;
+      CurrentOverloadPenaltyParameter.Value = null;
     }
 
Index: /branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/SingleDepotVRP/CVRP/CVRPTW/CVRPPDTW/CVRPPDTWProblemInstance.cs
===================================================================
--- /branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/SingleDepotVRP/CVRP/CVRPTW/CVRPPDTW/CVRPPDTWProblemInstance.cs	(revision 7863)
+++ /branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/SingleDepotVRP/CVRP/CVRPTW/CVRPPDTW/CVRPPDTWProblemInstance.cs	(revision 7864)
@@ -50,9 +50,11 @@
     }
 
-    [Storable]
-    private DoubleValue currentPickupViolationPenalty;
+    protected IValueParameter<DoubleValue> CurrentPickupViolationPenaltyParameter {
+      get { return (IValueParameter<DoubleValue>)Parameters["CurrentPickupViolationPenalty"]; }
+    }
 
     public DoubleValue PickupViolationPenalty {
       get {
+        DoubleValue currentPickupViolationPenalty = CurrentPickupViolationPenaltyParameter.Value;
         if (currentPickupViolationPenalty != null)
           return currentPickupViolationPenalty;
@@ -60,5 +62,5 @@
           return PickupViolationPenaltyParameter.Value;
       }
-      set { currentPickupViolationPenalty = value; }
+      set { CurrentPickupViolationPenaltyParameter.Value = value; }
     }
 
@@ -93,4 +95,5 @@
 
       Parameters.Add(new ValueParameter<DoubleValue>("EvalPickupViolationPenalty", "The pickup violation penalty considered in the evaluation.", new DoubleValue(100)));
+      Parameters.Add(new OptionalValueParameter<DoubleValue>("CurrentPickupViolationPenalty", "The current pickup violation penalty considered in the evaluation."));
 
       AttachEventHandlers();
@@ -103,6 +106,4 @@
     protected CVRPPDTWProblemInstance(CVRPPDTWProblemInstance original, Cloner cloner)
       : base(original, cloner) {
-        currentPickupViolationPenalty = cloner.Clone(original.currentPickupViolationPenalty) as DoubleValue;
-
         AttachEventHandlers();
     }
@@ -120,5 +121,5 @@
       base.InitializeState();
 
-      currentPickupViolationPenalty = null;
+      CurrentPickupViolationPenaltyParameter.Value = null;
     }
 
Index: /branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/SingleDepotVRP/CVRP/CVRPTW/CVRPTWProblemInstance.cs
===================================================================
--- /branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/SingleDepotVRP/CVRP/CVRPTW/CVRPTWProblemInstance.cs	(revision 7863)
+++ /branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/SingleDepotVRP/CVRP/CVRPTW/CVRPTWProblemInstance.cs	(revision 7864)
@@ -72,9 +72,11 @@
     }
 
-    [Storable]
-    private DoubleValue currentTardinessPenalty;
+    protected IValueParameter<DoubleValue> CurrentTardinessPenaltyParameter {
+      get { return (IValueParameter<DoubleValue>)Parameters["CurrentTardinessPenalty"]; }
+    }
 
     public DoubleValue TardinessPenalty {
       get {
+        DoubleValue currentTardinessPenalty = CurrentTardinessPenaltyParameter.Value;
         if (currentTardinessPenalty != null)
           return currentTardinessPenalty;
@@ -82,5 +84,5 @@
           return TardinessPenaltyParameter.Value;
       }
-      set { currentTardinessPenalty = value; }
+      set { CurrentTardinessPenaltyParameter.Value = value; }
     }
 
@@ -112,4 +114,5 @@
       Parameters.Add(new ValueParameter<DoubleValue>("EvalTimeFactor", "The time factor considered in the evaluation.", new DoubleValue(0)));
       Parameters.Add(new ValueParameter<DoubleValue>("EvalTardinessPenalty", "The tardiness penalty considered in the evaluation.", new DoubleValue(100)));
+      Parameters.Add(new OptionalValueParameter<DoubleValue>("CurrentTardinessPenalty", "The current tardiness penalty considered in the evaluation."));
 
       AttachEventHandlers();
@@ -122,6 +125,4 @@
     protected CVRPTWProblemInstance(CVRPTWProblemInstance original, Cloner cloner)
       : base(original, cloner) {
-        currentTardinessPenalty = cloner.Clone(original.currentTardinessPenalty) as DoubleValue;
-
         AttachEventHandlers();
     }
@@ -142,5 +143,5 @@
       base.InitializeState();
 
-      currentTardinessPenalty = null;
+      CurrentTardinessPenaltyParameter.Value = null;
     }
 
