Index: trunk/sources/HeuristicLab.Encodings.RealVectorEncoding/3.3/ParticleOperators/RealVectorParticleUpdater.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.RealVectorEncoding/3.3/ParticleOperators/RealVectorParticleUpdater.cs	(revision 5561)
+++ trunk/sources/HeuristicLab.Encodings.RealVectorEncoding/3.3/ParticleOperators/RealVectorParticleUpdater.cs	(revision 5566)
@@ -43,5 +43,5 @@
     }
     public ILookupParameter<RealVector> PersonalBestParameter {
-      get { return (ILookupParameter<RealVector>)Parameters["PersonalBestParameter"]; }
+      get { return (ILookupParameter<RealVector>)Parameters["PersonalBest"]; }
     }
     public ILookupParameter<RealVector> NeighborsBestParameter {
Index: trunk/sources/HeuristicLab.Encodings.RealVectorEncoding/3.3/ParticleOperators/RealVectorSwarmUpdater.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.RealVectorEncoding/3.3/ParticleOperators/RealVectorSwarmUpdater.cs	(revision 5561)
+++ trunk/sources/HeuristicLab.Encodings.RealVectorEncoding/3.3/ParticleOperators/RealVectorSwarmUpdater.cs	(revision 5566)
@@ -132,7 +132,7 @@
     public override IOperation Apply() {
       InitializeBestPoint();
+      UpdateSwarm();
       UpdateNeighbors();
       UpdateVelocityBounds();
-      UpdateSwarm();
       return base.Apply();
     }
@@ -140,5 +140,5 @@
     private void InitializeBestPoint() {
       if (BestQuality == null)
-        BestQualityParameter.ActualValue = new DoubleValue(); 
+        BestQualityParameter.ActualValue = new DoubleValue();
       BestQuality.Value = Maximization ? Quality.Max(v => v.Value) : Quality.Min(v => v.Value);
       int bestIndex = Quality.FindIndex(v => v.Value == BestQuality.Value);
@@ -167,26 +167,28 @@
     private void UpdateSwarm() {
       if (PersonalBestQuality.Length == 0) {
-        PersonalBestQualityParameter.ActualValue = new ItemArray<DoubleValue>(RealVector.Length);
+        ItemArray<DoubleValue> personalBestQualities = new ItemArray<DoubleValue>(RealVector.Length);
         for (int i = 0; i < RealVector.Length; i++) {
           if (Maximization) {
-            PersonalBestQuality[i] = new DoubleValue();
+            personalBestQualities[i] = new DoubleValue(double.MinValue);
           } else {
-            PersonalBestQuality[i] = new DoubleValue(double.MaxValue); 
+            personalBestQualities[i] = new DoubleValue(double.MaxValue);
           }
         }
+        PersonalBestQualityParameter.ActualValue = personalBestQualities;
       }
       if (NeighborsBestQuality.Length == 0) {
-        NeighborsBestQualityParameter.ActualValue = new ItemArray<DoubleValue>(RealVector.Length);
-        for (int i = 0; i < RealVector.Length; i++) {
-          if (Maximization) {
-            NeighborsBestQuality[i] = new DoubleValue();
-          } else {
-            NeighborsBestQuality[i] = new DoubleValue(double.MaxValue);
+        if (NeighborsParameter != null && Neighbors.Length > 0) {
+          ItemArray<DoubleValue> neighborsBestQualities = new ItemArray<DoubleValue>(RealVector.Length);
+          for (int i = 0; i < RealVector.Length; i++) {
+            if (Maximization) {
+              neighborsBestQualities[i] = new DoubleValue(double.MinValue);
+            } else {
+              neighborsBestQualities[i] = new DoubleValue(double.MaxValue);
+            }
           }
-        }
-      }
-      if (NeighborsBest.Length == 0) {
-        NeighborsBestParameter.ActualValue = new ItemArray<RealVector>(RealVector.Length);
-      }
+          NeighborsBestQualityParameter.ActualValue = neighborsBestQualities;
+        }
+      }
+      ItemArray<RealVector> neighborsBest = new ItemArray<RealVector>(RealVector.Length);
       for (int i = 0; i < RealVector.Length; i++) {
         if (Maximization && Quality[i].Value > PersonalBestQuality[i].Value ||
@@ -197,7 +199,10 @@
              !Maximization && PersonalBestQuality[i].Value < NeighborsBestQuality[i].Value) {
             NeighborsBestQuality[i].Value = PersonalBestQuality[i].Value;
-            NeighborsBest[i] = PersonalBest[i];
+            neighborsBest[i] = PersonalBest[i];
           }
         }
+      }
+      if (NeighborsParameter != null && Neighbors.Length > 0) {
+        NeighborsBestParameter.ActualValue = neighborsBest;
       }
     }
