Index: trunk/sources/HeuristicLab.Algorithms.GradientDescent/3.3/Lbfgs.cs
===================================================================
--- trunk/sources/HeuristicLab.Algorithms.GradientDescent/3.3/Lbfgs.cs	(revision 9408)
+++ trunk/sources/HeuristicLab.Algorithms.GradientDescent/3.3/Lbfgs.cs	(revision 9409)
@@ -55,4 +55,5 @@
     private const string SeedParameterName = "Seed";
     private const string SetSeedRandomlyParameterName = "SetSeedRandomly";
+    private const string GradientCheckStepSizeParameterName = "GradientCheckStepSize";
 
     #region parameter properties
@@ -65,4 +66,7 @@
     public IValueParameter<BoolValue> SetSeedRandomlyParameter {
       get { return (IValueParameter<BoolValue>)Parameters[SetSeedRandomlyParameterName]; }
+    }
+    public IValueParameter<DoubleValue> GradientStepSizeParameter {
+      get { return (IValueParameter<DoubleValue>)Parameters[GradientCheckStepSizeParameterName]; }
     }
     #endregion
@@ -106,6 +110,4 @@
     public LbfgsAlgorithm()
       : base() {
-      this.name = ItemName;
-      this.description = ItemDescription;
 
       Parameters.Add(new ValueParameter<IntValue>(MaxIterationsParameterName, "The maximal number of iterations for.", new IntValue(20)));
@@ -113,5 +115,8 @@
       Parameters.Add(new ValueParameter<BoolValue>(SetSeedRandomlyParameterName, "True if the random seed should be set to a random value, otherwise false.", new BoolValue(true)));
       Parameters.Add(new ValueParameter<BoolValue>(ApproximateGradientsParameterName, "Indicates that gradients should be approximated.", new BoolValue(true)));
-      Parameters[ApproximateGradientsParameterName].Hidden = true; // should not be changed
+      Parameters.Add(new OptionalValueParameter<DoubleValue>(GradientCheckStepSizeParameterName, "Step size for the gradient check (should be used for debugging the gradient calculation only)."));
+      // these parameter should not be changed usually
+      Parameters[ApproximateGradientsParameterName].Hidden = true;
+      Parameters[GradientCheckStepSizeParameterName].Hidden = true;
 
       var randomCreator = new RandomCreator();
@@ -133,5 +138,5 @@
       randomCreator.Successor = solutionCreator;
 
-      solutionCreator.Name = "Solution Creator (placeholder)";
+      solutionCreator.Name = "(Solution Creator)";
       solutionCreator.Successor = initializer;
 
@@ -147,5 +152,5 @@
       branch.TrueBranch = finalAnalyzer;
 
-      evaluator.Name = "Evaluator (placeholder)";
+      evaluator.Name = "(Evaluator)";
       evaluator.Successor = updateResults;
 
Index: trunk/sources/HeuristicLab.Algorithms.GradientDescent/3.3/LbfgsInitializer.cs
===================================================================
--- trunk/sources/HeuristicLab.Algorithms.GradientDescent/3.3/LbfgsInitializer.cs	(revision 9408)
+++ trunk/sources/HeuristicLab.Algorithms.GradientDescent/3.3/LbfgsInitializer.cs	(revision 9409)
@@ -38,4 +38,5 @@
     private const string IterationsParameterName = "Iterations";
     private const string ApproximateGradientsParameterName = "ApproximateGradients";
+    private const string GradientCheckStepSizeParameterName = "GradientCheckStepSize";
 
     #region Parameter Properties
@@ -53,4 +54,7 @@
     public ILookupParameter<BoolValue> ApproximateGradientsParameter {
       get { return (ILookupParameter<BoolValue>)Parameters[ApproximateGradientsParameterName]; }
+    }
+    public ILookupParameter<DoubleValue> GradientStepSizeParameter {
+      get { return (ILookupParameter<DoubleValue>)Parameters[GradientCheckStepSizeParameterName]; }
     }
 
@@ -74,4 +78,5 @@
       Parameters.Add(new LookupParameter<BoolValue>(ApproximateGradientsParameterName,
                                                     "Flag that indicates if gradients should be approximated."));
+      Parameters.Add(new LookupParameter<DoubleValue>(GradientCheckStepSizeParameterName, "Step size for the gradient check (should be used for debugging the gradient calculation only)."));
       // out
       Parameters.Add(new LookupParameter<LbfgsState>(StateParameterName, "The state of the LM-BFGS algorithm."));
@@ -93,5 +98,6 @@
       alglib.minlbfgs.minlbfgssetcond(state, 0.0, 0, 0, Iterations.Value);
       alglib.minlbfgs.minlbfgssetxrep(state, true);
-      // alglib.minlbfgs.minlbfgssetgradientcheck(state, 0.000001);
+      if (GradientStepSizeParameter.ActualValue != null && GradientStepSizeParameter.ActualValue.Value > 0)
+        alglib.minlbfgs.minlbfgssetgradientcheck(state, GradientStepSizeParameter.ActualValue.Value);
 
       PointParameter.ActualValue = new RealVector(initialPoint);
