Index: trunk/sources/HeuristicLab.Algorithms.ParticleSwarmOptimization/3.3/ParticleSwarmOptimization.cs
===================================================================
--- trunk/sources/HeuristicLab.Algorithms.ParticleSwarmOptimization/3.3/ParticleSwarmOptimization.cs	(revision 5643)
+++ trunk/sources/HeuristicLab.Algorithms.ParticleSwarmOptimization/3.3/ParticleSwarmOptimization.cs	(revision 5645)
@@ -166,4 +166,5 @@
       RandomCreator randomCreator = new RandomCreator();
       VariableCreator variableCreator = new VariableCreator();
+      Assigner assigner = new Assigner();
       solutionsCreator = new SolutionsCreator();
       SubScopesCounter subScopesCounter = new SubScopesCounter();
@@ -180,5 +181,10 @@
       variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("CurrentIteration", new IntValue(0)));
       variableCreator.CollectedValues.Add(new ValueParameter<DoubleValue>("CurrentVelocityBounds", new DoubleValue(0)));
-      variableCreator.Successor = solutionsCreator;
+      variableCreator.Successor = assigner;
+
+      assigner.Name = "CurrentInertia := Inertia";
+      assigner.LeftSideParameter.ActualName = "CurrentInertia";
+      assigner.RightSideParameter.ActualName = "Inertia";
+      assigner.Successor = solutionsCreator;
 
       solutionsCreator.NumberOfSolutionsParameter.ActualName = "SwarmSize";
@@ -195,5 +201,5 @@
 
       mainLoop.AnalyzerParameter.ActualName = AnalyzerParameter.Name;
-      mainLoop.InertiaParameter.ActualName = InertiaParameter.Name;
+      mainLoop.InertiaParameter.ActualName = "CurrentInertia";
       mainLoop.MaxIterationsParameter.ActualName = MaxIterationsParameter.Name;
       mainLoop.NeighborBestAttractionParameter.ActualName = NeighborBestAttractionParameter.Name;
@@ -231,13 +237,4 @@
       if (Problem != null && ParticleCreator != null && ParticleUpdater != null) {
         base.Prepare();
-        VariableCreator creator = (VariableCreator)((RandomCreator)OperatorGraph.InitialOperator).Successor;
-        ValueParameter<DoubleValue> currentInertia = null; 
-        if (creator.CollectedValues.ContainsKey("CurrentInertia")) {
-          currentInertia = (ValueParameter<DoubleValue>) creator.CollectedValues["CurrentInertia"]; 
-        } else {
-          currentInertia = new ValueParameter<DoubleValue>("CurrentInertia");
-          creator.CollectedValues.Add(currentInertia); 
-        }
-        currentInertia.ActualValue = InertiaParameter.ActualValue; 
       }
     }
@@ -257,13 +254,4 @@
       this.UpdateTopologyParameters();
     }
-
-    //void VelocityBoundsUpdaterParameter_ValueChanged(object sender, EventArgs e) {
-    //  if (VelocityBoundsParameter.Value != null) {
-    //    foreach (IDiscreteDoubleMatrixModifier matrixOp in VelocityBoundsUpdaterParameter.Value.ScalingOperatorParameter.ValidValues) {
-    //      matrixOp.ValueParameter.ActualName = VelocityBoundsUpdater.ScaleParameter.Name;
-    //      matrixOp.StartValueParameter.Value = new DoubleValue(VelocityBoundsUpdater.ScaleParameter.ActualValue.Value);
-    //    }
-    //  }
-    //}
     #endregion
 
@@ -315,7 +303,7 @@
         updater.StartIndexParameter.Value = new IntValue(0);
         updater.IndexParameter.ActualName = "CurrentIteration";
-        updater.ValueParameter.ActualName = "CurrentInertia"; 
+        updater.ValueParameter.ActualName = "CurrentInertia";
         updater.StartValueParameter.Value = new DoubleValue(1);
-        updater.EndValueParameter.Value = new DoubleValue(0);
+        updater.EndValueParameter.Value = new DoubleValue(double.Epsilon);
       }
     }
Index: trunk/sources/HeuristicLab.Algorithms.ParticleSwarmOptimization/3.3/ParticleSwarmOptimizationMainLoop.cs
===================================================================
--- trunk/sources/HeuristicLab.Algorithms.ParticleSwarmOptimization/3.3/ParticleSwarmOptimizationMainLoop.cs	(revision 5643)
+++ trunk/sources/HeuristicLab.Algorithms.ParticleSwarmOptimization/3.3/ParticleSwarmOptimizationMainLoop.cs	(revision 5645)
@@ -48,5 +48,5 @@
     }
     public IValueLookupParameter<DoubleValue> InertiaParameter {
-      get { return (IValueLookupParameter<DoubleValue>)Parameters["Inertia"]; }
+      get { return (IValueLookupParameter<DoubleValue>)Parameters["CurrentInertia"]; }
     }
     public IValueLookupParameter<DoubleValue> PersonalBestAttractionParameter {
@@ -105,5 +105,5 @@
       Parameters.Add(new ValueLookupParameter<IOperator>("Analyzer", "The operator used to analyze each generation."));
 
-      Parameters.Add(new ValueLookupParameter<DoubleValue>("Inertia", "Inertia weight on a particle's movement (omega)."));
+      Parameters.Add(new ValueLookupParameter<DoubleValue>("CurrentInertia", "Inertia weight on a particle's movement (omega)."));
       Parameters.Add(new ValueLookupParameter<DoubleValue>("PersonalBestAttraction", "Weight for particle's pull towards its personal best soution (phi_p)."));
       Parameters.Add(new ValueLookupParameter<DoubleValue>("NeighborBestAttraction", "Weight for pull towards the neighborhood best solution or global best solution in case of a totally connected topology (phi_g)."));
@@ -141,6 +141,6 @@
       #region Create operator graph
       OperatorGraph.InitialOperator = resultsCollector;
-      resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("Iterations", null, "CurrentIteration"));
-      resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Current Inertia", null, "CurrentInertia"));
+      resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("Iterations"));
+      resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentInertia"));
       resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("Evaluated Solutions", null, "EvaluatedSolutions"));
       resultsCollector.ResultsParameter.ActualName = "Results";
@@ -170,5 +170,5 @@
       subScopesCounter.Name = "Increment EvaluatedSolutions";
       subScopesCounter.ValueParameter.ActualName = EvaluatedSolutionsParameter.Name;
-      subScopesCounter.Successor = topologyUpdaterPlaceholder; 
+      subScopesCounter.Successor = topologyUpdaterPlaceholder;
 
       topologyUpdaterPlaceholder.Name = "(TopologyUpdater)";
