GSLMinimizer ignoring step size

Hi,

Is it possible there’s a bug in the GSLMinimizer class such that it ignores the step size?

I’m trying a minimization of a function with two parameters:

 ROOT::Math::Functor f(&function,2); 
   double step[2] = {1.0,100.0};
   double variable[2] = { 1.0,-200.0};
 
   min.SetFunction(f);
 
   min.SetVariable(0,"x",variable[0], step[0]);
   min.SetVariable(1,"y",variable[1], step[1]);

But the Minization does not work as expected:

(In this table the first column is parameter 1, second column is parameter 2 and third column is the function return value).

We see that the minimizer completely ignores the fact I set the step sizes to a different value, and because of that, it terminates the minization because it cannot converge…

Thank you if someone can confirm this is a bug, or if I’m using this wrong.

Jonathan

Hi,

In case of the GSL algorithm the step size is used as a value for the first iteration, see the documentation at
gnu.org/software/gsl/manual … -Minimizer

And I think the actual step value is computed taking into account the gradient of the function.
In ROOT you can pass different step size for each parameter (this is needed for Minuit). But in case of the GSL minimiser a global step is computed from the module of all the given step sizes.
The fact that your parameter values change very little is probably due to the fact that the function gradient is close to zero in your starting point.
However, to understand better your minimisation failure, I would need your running code

Best Regards

Lorenzo