Index: trunk/sources/HeuristicLab.Algorithms.ParticleSwarmOptimization/3.3/HeuristicLab.Algorithms.ParticleSwarmOptimization-3.3.csproj
===================================================================
--- trunk/sources/HeuristicLab.Algorithms.ParticleSwarmOptimization/3.3/HeuristicLab.Algorithms.ParticleSwarmOptimization-3.3.csproj	(revision 3414)
+++ trunk/sources/HeuristicLab.Algorithms.ParticleSwarmOptimization/3.3/HeuristicLab.Algorithms.ParticleSwarmOptimization-3.3.csproj	(revision 3415)
@@ -86,4 +86,5 @@
     <Compile Include="PermutationToRealVectorEncoder.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="RealVectorToRealVectorEncoder.cs" />
   </ItemGroup>
   <ItemGroup>
Index: trunk/sources/HeuristicLab.Algorithms.ParticleSwarmOptimization/3.3/ParticleSwarmOptimization.cs
===================================================================
--- trunk/sources/HeuristicLab.Algorithms.ParticleSwarmOptimization/3.3/ParticleSwarmOptimization.cs	(revision 3414)
+++ trunk/sources/HeuristicLab.Algorithms.ParticleSwarmOptimization/3.3/ParticleSwarmOptimization.cs	(revision 3415)
@@ -48,4 +48,8 @@
       set { base.Problem = value; }
     }
+    public IRealVectorEncoder Encoder {
+      get { return EncoderParameter.Value; }
+      set { EncoderParameter.Value = value; }
+    }
     #endregion 
 
@@ -84,9 +88,11 @@
       Parameters.Add(new OptionalConstrainedValueParameter<IRealVectorEncoder>("Encoder", "The operator used to encode solutions as position vector."));
       //Parameters.Add(new ConstrainedValueParameter<IManipulator>("Mutator", "The operator used to mutate solutions."));
-
       RandomCreator randomCreator = new RandomCreator();
       SolutionsCreator solutionsCreator = new SolutionsCreator();
+      UniformSubScopesProcessor uniformSubScopesProcessor = new UniformSubScopesProcessor();
+      VariableCreator variableCreator = new VariableCreator();
+      variableCreator.CollectedValues.Add(new ValueParameter<RealVector>("Velocity", new RealVector()));
       //solutionsCreator.SolutionCreatorParameter.ActualName = Problem.SolutionCreator.Name;
-      mainLoop = new ParticleSwarmOptimizationMainLoop();
+      //mainLoop = new ParticleSwarmOptimizationMainLoop();
       OperatorGraph.InitialOperator = randomCreator;
 
@@ -99,13 +105,17 @@
 
       solutionsCreator.NumberOfSolutionsParameter.ActualName = SwarmSizeParameter.Name;
-      solutionsCreator.Successor = mainLoop;
+      solutionsCreator.Successor = variableCreator;
+      variableCreator.Successor = uniformSubScopesProcessor;
+      
 
-      mainLoop.EncoderParameter.ActualName = EncoderParameter.Name;
+      //evaluator.Successor = mainLoop;
+      //mainLoop.EncoderParameter.ActualName = EncoderParameter.Name;
 
       Initialize();
     }
 
+    [StorableHook(HookType.AfterDeserialization)]
     private void Initialize() {
-      
+      EncoderParameter.ValueChanged += new EventHandler(EncoderParameter_ValueChanged);
     }
 
@@ -136,4 +146,8 @@
       base.OnProblemChanged();
     }
+
+    private void EncoderParameter_ValueChanged(object sender, EventArgs e) {
+      ((UniformSubScopesProcessor)((SolutionsCreator)((RandomCreator)OperatorGraph.InitialOperator).Successor).Successor).Operator = EncoderParameter.Value;
+    }
     #endregion
 
@@ -152,4 +166,5 @@
       }
     }
+
     #endregion
   }
Index: trunk/sources/HeuristicLab.Algorithms.ParticleSwarmOptimization/3.3/ParticleSwarmOptimizationMainLoop.cs
===================================================================
--- trunk/sources/HeuristicLab.Algorithms.ParticleSwarmOptimization/3.3/ParticleSwarmOptimizationMainLoop.cs	(revision 3414)
+++ trunk/sources/HeuristicLab.Algorithms.ParticleSwarmOptimization/3.3/ParticleSwarmOptimizationMainLoop.cs	(revision 3415)
@@ -24,7 +24,7 @@
       get { return (ValueLookupParameter<IOperator>)Parameters["Encoder"]; }
     }
-    public ValueLookupParameter<IOperator> EvaluatorParameter {
-      get { return (ValueLookupParameter<IOperator>)Parameters["Evaluator"]; }
-    }
+    //public ValueLookupParameter<IOperator> EvaluatorParameter {
+    //  get { return (ValueLookupParameter<IOperator>)Parameters["Evaluator"]; }
+    //}
     #endregion
 
@@ -40,5 +40,5 @@
       Parameters.Add(new ValueLookupParameter<VariableCollection>("Results", "The variable collection where results should be stored."));
       Parameters.Add(new ValueLookupParameter<IOperator>("Encoder", "The encoding operator that maps a solution to a position vector."));
-      Parameters.Add(new ValueLookupParameter<IOperator>("Evaluator", "The operator used to evaluate solutions."));
+      //Parameters.Add(new ValueLookupParameter<IOperator>("Evaluator", "The operator used to evaluate solutions."));
       #endregion
 
@@ -53,6 +53,6 @@
       encoder.OperatorParameter.ActualName = EncoderParameter.Name;
 
-      evaluator.Name = "Evaluator (placeholder)";
-      evaluator.OperatorParameter.ActualName = EvaluatorParameter.Name;
+      //evaluator.Name = "Evaluator (placeholder)";
+      //evaluator.OperatorParameter.ActualName = EvaluatorParameter.Name;
       #endregion
 
@@ -61,5 +61,5 @@
       variableCreator.Successor = uniformSubScopesProcessor;
       uniformSubScopesProcessor.Operator = encoder;
-      uniformSubScopesProcessor.Successor = evaluator;
+      //uniformSubScopesProcessor.Successor = evaluator;
       #endregion
     }
Index: trunk/sources/HeuristicLab.Algorithms.ParticleSwarmOptimization/3.3/RealVectorToRealVectorEncoder.cs
===================================================================
--- trunk/sources/HeuristicLab.Algorithms.ParticleSwarmOptimization/3.3/RealVectorToRealVectorEncoder.cs	(revision 3415)
+++ trunk/sources/HeuristicLab.Algorithms.ParticleSwarmOptimization/3.3/RealVectorToRealVectorEncoder.cs	(revision 3415)
@@ -0,0 +1,37 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Encodings.RealVectorEncoding;
+using HeuristicLab.Operators;
+using HeuristicLab.Core;
+using HeuristicLab.Parameters;
+
+namespace HeuristicLab.Algorithms.ParticleSwarmOptimization {
+  public class RealVectorToRealVectorEncoder : SingleSuccessorOperator, IRealVectorEncoder {
+    public ILookupParameter<RealVector> RealVectorParameter {
+      get { return (ILookupParameter<RealVector>)Parameters["RealVector"]; }
+    }
+
+    public ILookupParameter<RealVector> RealVector2Parameter {
+      get { return (ILookupParameter<RealVector>)Parameters["RealVector2"]; }
+    }
+
+    public RealVectorToRealVectorEncoder()
+      : base() {
+      Parameters.Add(new LookupParameter<RealVector>("RealVector", "The original real vecor."));
+      Parameters.Add(new LookupParameter<RealVector>("RealVector2", "The resulting real vector (linked)."));
+    }
+
+    public override IOperation Apply() {
+      RealVector realVector = RealVectorParameter.ActualValue;
+
+      RealVector realVector2 = realVector; // only reference
+      return base.Apply();
+    }
+
+    public override bool CanChangeName {
+      get { return false; }
+    }
+  }
+}
