Index: branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/HeuristicLab.Encodings.RealVectorEncoding-3.3.csproj
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/HeuristicLab.Encodings.RealVectorEncoding-3.3.csproj	(revision 13401)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/HeuristicLab.Encodings.RealVectorEncoding-3.3.csproj	(revision 13403)
@@ -115,5 +115,9 @@
   <ItemGroup>
     <Compile Include="Creators\NormalDistributedRealVectorCreator.cs" />
+    <Compile Include="Interfaces\IRealVectorAdditiveMoveQualityOperator.cs" />
+    <Compile Include="Interfaces\IRealVectorBoundedOperator.cs" />
     <Compile Include="Interfaces\IRealVectorMultiNeighborhoodShakingOperator.cs" />
+    <Compile Include="Interfaces\IRealVectorSolutionsOperator.cs" />
+    <Compile Include="Interfaces\IRealVectorSolutionOperator.cs" />
     <Compile Include="ParticleOperators\RealVectorParticleCreator.cs" />
     <Compile Include="Crossovers\BlendAlphaBetaCrossover.cs" />
@@ -157,5 +161,5 @@
     <Compile Include="Interfaces\IRealVectorStdDevStrategyParameterManipulator.cs" />
     <Compile Include="Interfaces\IRealVectorStdDevStrategyParameterOperator.cs" />
-    <Compile Include="Interfaces\IAdditiveRealVectorMoveOperator.cs" />
+    <Compile Include="Interfaces\IRealVectorAdditiveMoveOperator.cs" />
     <Compile Include="Interfaces\IRealVectorBoundsChecker.cs" />
     <Compile Include="Interfaces\IRealVectorMoveGenerator.cs" />
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IAdditiveRealVectorMoveOperator.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IAdditiveRealVectorMoveOperator.cs	(revision 13401)
+++ 	(revision )
@@ -1,28 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using HeuristicLab.Core;
-
-namespace HeuristicLab.Encodings.RealVectorEncoding {
-  public interface IAdditiveRealVectorMoveOperator : IRealVectorMoveOperator {
-    ILookupParameter<AdditiveMove> AdditiveMoveParameter { get; }
-  }
-}
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorAdditiveMoveOperator.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorAdditiveMoveOperator.cs	(revision 13403)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorAdditiveMoveOperator.cs	(revision 13403)
@@ -0,0 +1,28 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using HeuristicLab.Core;
+
+namespace HeuristicLab.Encodings.RealVectorEncoding {
+  public interface IRealVectorAdditiveMoveOperator : IRealVectorMoveOperator {
+    ILookupParameter<AdditiveMove> AdditiveMoveParameter { get; }
+  }
+}
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorAdditiveMoveQualityOperator.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorAdditiveMoveQualityOperator.cs	(revision 13403)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorAdditiveMoveQualityOperator.cs	(revision 13403)
@@ -0,0 +1,29 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Encodings.RealVectorEncoding {
+  public interface IRealVectorAdditiveMoveQualityOperator : IRealVectorAdditiveMoveOperator {
+    ILookupParameter<DoubleValue> MoveQualityParameter { get; }
+  }
+}
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorBoundedOperator.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorBoundedOperator.cs	(revision 13403)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorBoundedOperator.cs	(revision 13403)
@@ -0,0 +1,29 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Encodings.RealVectorEncoding {
+  public interface IRealVectorBoundedOperator : IRealVectorOperator {
+    IValueLookupParameter<DoubleMatrix> BoundsParameter { get; }
+  }
+}
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorCreator.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorCreator.cs	(revision 13401)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorCreator.cs	(revision 13403)
@@ -28,8 +28,6 @@
   /// An interface which represents an operator for creating vectors of real-valued data.
   /// </summary>
-  public interface IRealVectorCreator : IRealVectorOperator, ISolutionCreator<RealVector> {
+  public interface IRealVectorCreator : IRealVectorSolutionOperator, IRealVectorBoundedOperator, ISolutionCreator<RealVector> {
     IValueLookupParameter<IntValue> LengthParameter { get; }
-    IValueLookupParameter<DoubleMatrix> BoundsParameter { get; }
-    ILookupParameter<RealVector> RealVectorParameter { get; }
   }
 }
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorCrossover.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorCrossover.cs	(revision 13401)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorCrossover.cs	(revision 13403)
@@ -21,5 +21,4 @@
 
 using HeuristicLab.Core;
-using HeuristicLab.Data;
 using HeuristicLab.Optimization;
 
@@ -28,8 +27,7 @@
   /// An interface which represents an operator for crossing vectors of real-valued data.
   /// </summary>
-  public interface IRealVectorCrossover : IRealVectorOperator, ICrossover {
+  public interface IRealVectorCrossover : IRealVectorBoundedOperator, ICrossover {
     ILookupParameter<ItemArray<RealVector>> ParentsParameter { get; }
     ILookupParameter<RealVector> ChildParameter { get; }
-    IValueLookupParameter<DoubleMatrix> BoundsParameter { get; }
   }
 }
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorManipulator.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorManipulator.cs	(revision 13401)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorManipulator.cs	(revision 13403)
@@ -20,6 +20,4 @@
 #endregion
 
-using HeuristicLab.Core;
-using HeuristicLab.Data;
 using HeuristicLab.Optimization;
 
@@ -28,7 +26,5 @@
   /// An interface which represents an operator for manipulating vectors of real-valued data.
   /// </summary>
-  public interface IRealVectorManipulator : IRealVectorOperator, IManipulator {
-    ILookupParameter<RealVector> RealVectorParameter { get; }
-    IValueLookupParameter<DoubleMatrix> BoundsParameter { get; }
+  public interface IRealVectorManipulator : IRealVectorSolutionOperator, IRealVectorBoundedOperator, IManipulator {
   }
 }
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorMoveGenerator.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorMoveGenerator.cs	(revision 13401)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorMoveGenerator.cs	(revision 13403)
@@ -20,11 +20,8 @@
 #endregion
 
-using HeuristicLab.Core;
-using HeuristicLab.Data;
 using HeuristicLab.Optimization;
 
 namespace HeuristicLab.Encodings.RealVectorEncoding {
-  public interface IRealVectorMoveGenerator : IRealVectorMoveOperator, IMoveGenerator {
-    IValueLookupParameter<DoubleMatrix> BoundsParameter { get; }
+  public interface IRealVectorMoveGenerator : IRealVectorMoveOperator, IRealVectorBoundedOperator, IMoveGenerator {
   }
 }
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorMoveOperator.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorMoveOperator.cs	(revision 13401)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorMoveOperator.cs	(revision 13403)
@@ -20,10 +20,8 @@
 #endregion
 
-using HeuristicLab.Core;
 using HeuristicLab.Optimization;
 
 namespace HeuristicLab.Encodings.RealVectorEncoding {
-  public interface IRealVectorMoveOperator : IRealVectorOperator, IMoveOperator {
-    ILookupParameter<RealVector> RealVectorParameter { get; }
+  public interface IRealVectorMoveOperator : IRealVectorSolutionOperator, IMoveOperator {
   }
 }
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorMultiNeighborhoodShakingOperator.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorMultiNeighborhoodShakingOperator.cs	(revision 13401)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorMultiNeighborhoodShakingOperator.cs	(revision 13403)
@@ -20,11 +20,7 @@
 #endregion
 
-using HeuristicLab.Core;
-using HeuristicLab.Data;
 
 namespace HeuristicLab.Encodings.RealVectorEncoding {
-  public interface IRealVectorMultiNeighborhoodShakingOperator : IRealVectorOperator {
-    ILookupParameter<RealVector> RealVectorParameter { get; }
-    IValueLookupParameter<DoubleMatrix> BoundsParameter { get; }
+  public interface IRealVectorMultiNeighborhoodShakingOperator : IRealVectorSolutionOperator, IRealVectorBoundedOperator {
   }
 }
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorParticleCreator.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorParticleCreator.cs	(revision 13401)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorParticleCreator.cs	(revision 13403)
@@ -20,14 +20,12 @@
 #endregion
 
-using HeuristicLab.Optimization;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
+using HeuristicLab.Optimization;
 
 namespace HeuristicLab.Encodings.RealVectorEncoding {
-  public interface IRealVectorParticleCreator : IParticleCreator, IRealVectorOperator {
+  public interface IRealVectorParticleCreator : IParticleCreator, IRealVectorSolutionOperator, IRealVectorBoundedOperator {
     ILookupParameter<IntValue> ProblemSizeParameter { get; }
-    ILookupParameter<RealVector> RealVectorParameter { get; }
     ILookupParameter<RealVector> PersonalBestParameter { get; }
-    IValueLookupParameter<DoubleMatrix> BoundsParameter { get; }
     ILookupParameter<RealVector> VelocityParameter { get; }
   }
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorParticleUpdater.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorParticleUpdater.cs	(revision 13401)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorParticleUpdater.cs	(revision 13403)
@@ -25,9 +25,7 @@
 
 namespace HeuristicLab.Encodings.RealVectorEncoding {
-  public interface IRealVectorParticleUpdater : IParticleUpdater, IRealVectorOperator {
+  public interface IRealVectorParticleUpdater : IParticleUpdater, IRealVectorSolutionOperator, IRealVectorBoundedOperator {
     ILookupParameter<RealVector> VelocityParameter { get; }
     ILookupParameter<DoubleMatrix> CurrentVelocityBoundsParameter { get; }
-    ILookupParameter<RealVector> RealVectorParameter { get; }
-    ILookupParameter<DoubleMatrix> BoundsParameter { get; }
     ILookupParameter<RealVector> PersonalBestParameter { get; }
     ILookupParameter<RealVector> NeighborBestParameter { get; }
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorSolutionOperator.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorSolutionOperator.cs	(revision 13403)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorSolutionOperator.cs	(revision 13403)
@@ -0,0 +1,28 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using HeuristicLab.Core;
+
+namespace HeuristicLab.Encodings.RealVectorEncoding {
+  public interface IRealVectorSolutionOperator : IRealVectorOperator {
+    ILookupParameter<RealVector> RealVectorParameter { get; }
+  }
+}
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorSolutionsOperator.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorSolutionsOperator.cs	(revision 13403)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorSolutionsOperator.cs	(revision 13403)
@@ -0,0 +1,28 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using HeuristicLab.Core;
+
+namespace HeuristicLab.Encodings.RealVectorEncoding {
+  public interface IRealVectorSolutionsOperator : IRealVectorOperator {
+    IScopeTreeLookupParameter<RealVector> RealVectorsParameter { get; }
+  }
+}
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorStdDevStrategyParameterCreator.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorStdDevStrategyParameterCreator.cs	(revision 13401)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorStdDevStrategyParameterCreator.cs	(revision 13403)
@@ -25,8 +25,7 @@
 
 namespace HeuristicLab.Encodings.RealVectorEncoding {
-  public interface IRealVectorStdDevStrategyParameterCreator : IRealVectorStdDevStrategyParameterOperator, IStrategyParameterCreator {
+  public interface IRealVectorStdDevStrategyParameterCreator : IRealVectorStdDevStrategyParameterOperator, IStrategyParameterCreator, IRealVectorBoundedOperator {
     ILookupParameter<RealVector> StrategyParameterParameter { get; }
     IValueLookupParameter<IntValue> LengthParameter { get; }
-    IValueLookupParameter<DoubleMatrix> BoundsParameter { get; }
   }
 }
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorStdDevStrategyParameterManipulator.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorStdDevStrategyParameterManipulator.cs	(revision 13401)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorStdDevStrategyParameterManipulator.cs	(revision 13403)
@@ -21,11 +21,9 @@
 
 using HeuristicLab.Core;
-using HeuristicLab.Data;
 using HeuristicLab.Optimization;
 
 namespace HeuristicLab.Encodings.RealVectorEncoding {
-  public interface IRealVectorStdDevStrategyParameterManipulator : IRealVectorStdDevStrategyParameterOperator, IStrategyParameterManipulator {
+  public interface IRealVectorStdDevStrategyParameterManipulator : IRealVectorStdDevStrategyParameterOperator, IStrategyParameterManipulator, IRealVectorBoundedOperator {
     ILookupParameter<RealVector> StrategyParameterParameter { get; }
-    IValueLookupParameter<DoubleMatrix> BoundsParameter { get; }
   }
 }
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorSwarmUpdater.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorSwarmUpdater.cs	(revision 13401)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Interfaces/IRealVectorSwarmUpdater.cs	(revision 13403)
@@ -21,11 +21,10 @@
 
 using HeuristicLab.Core;
-using HeuristicLab.Optimization; 
+using HeuristicLab.Optimization;
 
 namespace HeuristicLab.Encodings.RealVectorEncoding {
-  public interface IRealVectorSwarmUpdater : ISwarmUpdater, IRealVectorOperator {
+  public interface IRealVectorSwarmUpdater : ISwarmUpdater, IRealVectorSolutionsOperator {
     IScopeTreeLookupParameter<RealVector> NeighborBestParameter { get; }
     IScopeTreeLookupParameter<RealVector> PersonalBestParameter { get; }
-    IScopeTreeLookupParameter<RealVector> RealVectorParameter { get; }
   }
 }
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Moves/AdditiveMoveGenerator.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Moves/AdditiveMoveGenerator.cs	(revision 13401)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Moves/AdditiveMoveGenerator.cs	(revision 13403)
@@ -31,5 +31,5 @@
   [Item("AdditiveMoveGenerator", "Base class for all additive move generators.")]
   [StorableClass]
-  public abstract class AdditiveMoveGenerator : SingleSuccessorOperator, IAdditiveRealVectorMoveOperator, IMoveGenerator, IStochasticOperator {
+  public abstract class AdditiveMoveGenerator : SingleSuccessorOperator, IRealVectorAdditiveMoveOperator, IMoveGenerator, IStochasticOperator {
     public override bool CanChangeName {
       get { return false; }
@@ -43,7 +43,4 @@
     public ILookupParameter<AdditiveMove> AdditiveMoveParameter {
       get { return (LookupParameter<AdditiveMove>)Parameters["AdditiveMove"]; }
-    }
-    protected ScopeParameter CurrentScopeParameter {
-      get { return (ScopeParameter)Parameters["CurrentScope"]; }
     }
     public IValueLookupParameter<DoubleMatrix> BoundsParameter {
@@ -59,5 +56,4 @@
       Parameters.Add(new LookupParameter<RealVector>("RealVector", "The real vector for which moves should be generated."));
       Parameters.Add(new LookupParameter<AdditiveMove>("AdditiveMove", "The moves that should be generated in subscopes."));
-      Parameters.Add(new ScopeParameter("CurrentScope", "The current scope where the moves should be added as subscopes."));
       Parameters.Add(new ValueLookupParameter<DoubleMatrix>("Bounds", "A 2 column matrix specifying the lower and upper bound for each dimension. If there are less rows than dimension the bounds vector is cycled."));
     }
@@ -72,5 +68,5 @@
         moveScopes[i].Variables.Add(new Variable(AdditiveMoveParameter.ActualName, moves[i]));
       }
-      CurrentScopeParameter.ActualValue.SubScopes.AddRange(moveScopes);
+      ExecutionContext.Scope.SubScopes.AddRange(moveScopes);
       return base.Apply();
     }
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Moves/AdditiveMoveMaker.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Moves/AdditiveMoveMaker.cs	(revision 13401)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Moves/AdditiveMoveMaker.cs	(revision 13403)
@@ -31,5 +31,5 @@
   [Item("AdditiveMoveMaker", "Peforms an additive move on a given real vector and updates the quality.")]
   [StorableClass]
-  public class AdditiveMoveMaker : SingleSuccessorOperator, IAdditiveRealVectorMoveOperator, IMoveMaker, ISingleObjectiveOperator {
+  public class AdditiveMoveMaker : SingleSuccessorOperator, IRealVectorAdditiveMoveQualityOperator, IMoveMaker, ISingleObjectiveOperator {
     public override bool CanChangeName {
       get { return false; }
@@ -63,11 +63,13 @@
     }
 
+    public static void Apply(RealVector realVector, AdditiveMove move) {
+      realVector[move.Dimension] += move.MoveDistance;
+    }
+
     public override IOperation Apply() {
-      AdditiveMove move = AdditiveMoveParameter.ActualValue;
-      RealVector realVector = RealVectorParameter.ActualValue;
-      DoubleValue moveQuality = MoveQualityParameter.ActualValue;
-      DoubleValue quality = QualityParameter.ActualValue;
+      Apply(RealVectorParameter.ActualValue, AdditiveMoveParameter.ActualValue);
+      var moveQuality = MoveQualityParameter.ActualValue;
+      var quality = QualityParameter.ActualValue;
 
-      realVector[move.Dimension] += move.MoveDistance;
       quality.Value = moveQuality.Value;
 
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Moves/AdditiveMoveTabuChecker.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Moves/AdditiveMoveTabuChecker.cs	(revision 13401)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Moves/AdditiveMoveTabuChecker.cs	(revision 13403)
@@ -32,5 +32,5 @@
   [Item("AdditiveMoveTabuChecker", "Prevents falling back into ranges that have been moved over before.")]
   [StorableClass]
-  public class AdditiveMoveTabuChecker : SingleSuccessorOperator, IAdditiveRealVectorMoveOperator, ITabuChecker {
+  public class AdditiveMoveTabuChecker : SingleSuccessorOperator, IRealVectorAdditiveMoveQualityOperator, ITabuChecker {
     public override bool CanChangeName {
       get { return false; }
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Moves/AdditiveMoveTabuMaker.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Moves/AdditiveMoveTabuMaker.cs	(revision 13401)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/Moves/AdditiveMoveTabuMaker.cs	(revision 13403)
@@ -29,5 +29,5 @@
   [Item("AdditiveMoveTabuMaker", "Sets the move tabu.")]
   [StorableClass]
-  public class AdditiveMoveTabuMaker : TabuMaker, IAdditiveRealVectorMoveOperator {
+  public class AdditiveMoveTabuMaker : TabuMaker, IRealVectorAdditiveMoveQualityOperator {
     public ILookupParameter<AdditiveMove> AdditiveMoveParameter {
       get { return (ILookupParameter<AdditiveMove>)Parameters["AdditiveMove"]; }
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/ParticleOperators/RealVectorParticleUpdater.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/ParticleOperators/RealVectorParticleUpdater.cs	(revision 13401)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/ParticleOperators/RealVectorParticleUpdater.cs	(revision 13403)
@@ -57,6 +57,6 @@
       get { return (ILookupParameter<RealVector>)Parameters["RealVector"]; }
     }
-    public ILookupParameter<DoubleMatrix> BoundsParameter {
-      get { return (ILookupParameter<DoubleMatrix>)Parameters["Bounds"]; }
+    public IValueLookupParameter<DoubleMatrix> BoundsParameter {
+      get { return (IValueLookupParameter<DoubleMatrix>)Parameters["Bounds"]; }
     }
     public ILookupParameter<DoubleMatrix> CurrentVelocityBoundsParameter {
@@ -124,5 +124,5 @@
       Parameters.Add(new LookupParameter<RealVector>("BestRealVector", "Global best position."));
       Parameters.Add(new LookupParameter<RealVector>("NeighborBest", "Best neighboring solution."));
-      Parameters.Add(new LookupParameter<DoubleMatrix>("Bounds", "The lower and upper bounds for each dimension of the position vector for the current problem."));
+      Parameters.Add(new ValueLookupParameter<DoubleMatrix>("Bounds", "The lower and upper bounds for each dimension of the position vector for the current problem."));
       Parameters.Add(new LookupParameter<DoubleMatrix>("CurrentVelocityBounds", "Upper and lower bounds for the particle's velocity vector."));
       Parameters.Add(new LookupParameter<DoubleValue>("CurrentInertia", "The weight for the particle's velocity vector."));
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/ParticleOperators/RealVectorSwarmUpdater.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/ParticleOperators/RealVectorSwarmUpdater.cs	(revision 13401)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/ParticleOperators/RealVectorSwarmUpdater.cs	(revision 13403)
@@ -54,6 +54,6 @@
       get { return (IScopeTreeLookupParameter<DoubleValue>)Parameters["NeighborBestQuality"]; }
     }
-    public IScopeTreeLookupParameter<RealVector> RealVectorParameter {
-      get { return (IScopeTreeLookupParameter<RealVector>)Parameters["RealVector"]; }
+    public IScopeTreeLookupParameter<RealVector> RealVectorsParameter {
+      get { return (IScopeTreeLookupParameter<RealVector>)Parameters["RealVectors"]; }
     }
     public IScopeTreeLookupParameter<RealVector> PersonalBestParameter {
@@ -131,6 +131,6 @@
       set { NeighborBestQualityParameter.ActualValue = value; }
     }
-    private ItemArray<RealVector> RealVector {
-      get { return RealVectorParameter.ActualValue; }
+    private ItemArray<RealVector> RealVectors {
+      get { return RealVectorsParameter.ActualValue; }
     }
     private ItemArray<RealVector> PersonalBest {
@@ -186,5 +186,5 @@
       Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>("PersonalBestQuality", "Particles' personal best qualities."));
       Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>("NeighborBestQuality", "Best neighbor particles' qualities."));
-      Parameters.Add(new ScopeTreeLookupParameter<RealVector>("RealVector", "Particles' positions."));
+      Parameters.Add(new ScopeTreeLookupParameter<RealVector>("RealVectors", "Particles' positions."));
       Parameters.Add(new ScopeTreeLookupParameter<RealVector>("PersonalBest", "Particles' personal best positions."));
       Parameters.Add(new ScopeTreeLookupParameter<RealVector>("NeighborBest", "Neighborhood (or global in case of totally connected neighborhood) best particle positions."));
@@ -288,5 +288,5 @@
         SwarmBestQuality = new DoubleValue();
       SwarmBestQuality.Value = Maximization ? Quality.Max(v => v.Value) : Quality.Min(v => v.Value);
-      BestRealVector = (RealVector)RealVector[Quality.FindIndex(v => v.Value == SwarmBestQuality.Value)].Clone();
+      BestRealVector = (RealVector)RealVectors[Quality.FindIndex(v => v.Value == SwarmBestQuality.Value)].Clone();
     }
 
@@ -296,5 +296,5 @@
         var neighborBestQuality = new ItemArray<DoubleValue>(Neighbors.Length);
         for (int n = 0; n < Neighbors.Length; n++) {
-          var pairs = Quality.Zip(RealVector, (q, p) => new { Quality = q, Point = p })
+          var pairs = Quality.Zip(RealVectors, (q, p) => new { Quality = q, Point = p })
             .Where((p, i) => i == n || Neighbors[n].Contains(i));
           var bestNeighbor = Maximization ?
@@ -312,9 +312,9 @@
       if (PersonalBestQuality.Length == 0)
         PersonalBestQuality = (ItemArray<DoubleValue>)Quality.Clone();
-      for (int i = 0; i < RealVector.Length; i++) {
+      for (int i = 0; i < RealVectors.Length; i++) {
         if (Maximization && Quality[i].Value > PersonalBestQuality[i].Value ||
           !Maximization && Quality[i].Value < PersonalBestQuality[i].Value) {
           PersonalBestQuality[i].Value = Quality[i].Value;
-          PersonalBest[i] = RealVector[i];
+          PersonalBest[i] = RealVectors[i];
         }
       }
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/RealVectorEncoding.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/RealVectorEncoding.cs	(revision 13401)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/RealVectorEncoding.cs	(revision 13403)
@@ -171,5 +171,8 @@
           typeof (IRealVectorBoundsChecker),
           typeof (IRealVectorMoveOperator),
-          typeof (IRealVectorMoveGenerator)
+          typeof (IRealVectorMoveGenerator),
+          typeof (IRealVectorSolutionOperator),
+          typeof (IRealVectorSolutionsOperator),
+          typeof (IRealVectorBoundedOperator)
       };
     }
@@ -209,5 +212,8 @@
       ConfigureMoveGenerators(operators.OfType<IRealVectorMoveGenerator>());
       ConfigureMoveOperators(operators.OfType<IRealVectorMoveOperator>());
-      ConfigureAdditiveMoveOperator(operators.OfType<IAdditiveRealVectorMoveOperator>());
+      ConfigureAdditiveMoveOperator(operators.OfType<IRealVectorAdditiveMoveOperator>());
+      ConfigureRealVectorSolutionOperators(operators.OfType<IRealVectorSolutionOperator>());
+      ConfigureRealVectorSolutionsOperators(operators.OfType<IRealVectorSolutionsOperator>());
+      ConfigureRealVectorBoundedOperators(operators.OfType<IRealVectorBoundedOperator>());
     }
 
@@ -215,7 +221,5 @@
     private void ConfigureCreators(IEnumerable<IRealVectorCreator> creators) {
       foreach (var creator in creators) {
-        creator.RealVectorParameter.ActualName = Name;
         creator.LengthParameter.ActualName = LengthParameter.Name;
-        creator.BoundsParameter.ActualName = BoundsParameter.Name;
       }
     }
@@ -224,12 +228,8 @@
         crossover.ChildParameter.ActualName = Name;
         crossover.ParentsParameter.ActualName = Name;
-        crossover.BoundsParameter.ActualName = BoundsParameter.Name;
       }
     }
     private void ConfigureManipulators(IEnumerable<IRealVectorManipulator> manipulators) {
       foreach (var manipulator in manipulators) {
-        manipulator.RealVectorParameter.ActualName = Name;
-        manipulator.BoundsParameter.ActualName = BoundsParameter.Name;
-        manipulator.BoundsParameter.Hidden = true;
         var sm = manipulator as ISelfAdaptiveManipulator;
         if (sm != null) {
@@ -272,26 +272,16 @@
     }
     private void ConfigureSwarmUpdaters(IEnumerable<IRealVectorSwarmUpdater> swarmUpdaters) {
-      foreach (var su in swarmUpdaters) {
-        su.RealVectorParameter.ActualName = Name;
-      }
+      // swarm updaters don't have additional parameters besides the solution parameter
     }
     private void ConfigureParticleCreators(IEnumerable<IRealVectorParticleCreator> particleCreators) {
       foreach (var particleCreator in particleCreators) {
-        particleCreator.RealVectorParameter.ActualName = Name;
-        particleCreator.BoundsParameter.ActualName = BoundsParameter.Name;
         particleCreator.ProblemSizeParameter.ActualName = LengthParameter.Name;
       }
     }
     private void ConfigureParticleUpdaters(IEnumerable<IRealVectorParticleUpdater> particleUpdaters) {
-      foreach (var particleUpdater in particleUpdaters) {
-        particleUpdater.RealVectorParameter.ActualName = Name;
-        particleUpdater.BoundsParameter.ActualName = BoundsParameter.Name;
-      }
+      // particle updaters don't have additional parameters besides solution and bounds parameter
     }
     private void ConfigureShakingOperators(IEnumerable<IRealVectorMultiNeighborhoodShakingOperator> shakingOperators) {
-      foreach (var shakingOperator in shakingOperators) {
-        shakingOperator.RealVectorParameter.ActualName = Name;
-        shakingOperator.BoundsParameter.ActualName = BoundsParameter.Name;
-      }
+      // shaking operators don't have additional parameters besides solution and bounds parameter
     }
     private void ConfigureBoundsCheckers(IEnumerable<IRealVectorBoundsChecker> boundsCheckers) {
@@ -302,16 +292,25 @@
     }
     private void ConfigureMoveOperators(IEnumerable<IRealVectorMoveOperator> moveOperators) {
-      foreach (var moveOperator in moveOperators)
-        moveOperator.RealVectorParameter.ActualName = Name;
-    }
-
+      // move operators don't have additional parameters besides the solution parameter
+    }
     private void ConfigureMoveGenerators(IEnumerable<IRealVectorMoveGenerator> moveGenerators) {
-      foreach (var moveGenerator in moveGenerators)
-        moveGenerator.BoundsParameter.ActualName = BoundsParameter.Name;
-    }
-
-    private void ConfigureAdditiveMoveOperator(IEnumerable<IAdditiveRealVectorMoveOperator> additiveMoveOperators) {
+      // move generators don't have additional parameters besides solution and bounds parameter
+    }
+    private void ConfigureAdditiveMoveOperator(IEnumerable<IRealVectorAdditiveMoveOperator> additiveMoveOperators) {
       foreach (var additiveMoveOperator in additiveMoveOperators) {
         additiveMoveOperator.AdditiveMoveParameter.ActualName = Name + ".AdditiveMove";
+      }
+    }
+    private void ConfigureRealVectorSolutionOperators(IEnumerable<IRealVectorSolutionOperator> solutionOperators) {
+      foreach (var solutionOperator in solutionOperators)
+        solutionOperator.RealVectorParameter.ActualName = Name;
+    }
+    private void ConfigureRealVectorSolutionsOperators(IEnumerable<IRealVectorSolutionsOperator> solutionsOperators) {
+      foreach (var solutionsOperator in solutionsOperators)
+        solutionsOperator.RealVectorsParameter.ActualName = Name;
+    }
+    private void ConfigureRealVectorBoundedOperators(IEnumerable<IRealVectorBoundedOperator> boundedOperators) {
+      foreach (var boundedOperator in boundedOperators) {
+        boundedOperator.BoundsParameter.ActualName = BoundsParameter.Name;
       }
     }
