Minuit2 SetPrintLevel()

Hello.

I have a Minuit2 plug-in created minimizer and I am still getting info messages from it even after setting the Print Level to -1.

code like this:

cout << "PrintLevel: " << min->PrintLevel() << endl;
min->Minimize();

results in:

PrintLevel: -1
Info in <Minuit2>: matrix forced pos-def by adding to diagonal : padd = 74.0642
Info in <Minuit2>: MnHesse: matrix was forced pos. def. 
Info in <Minuit2>: VariableMetricBuilder: no improvement in line search
Info in <Minuit2>: VariableMetricBuilder: iterations finish without convergence.
Info in <Minuit2>: VariableMetricBuilder : edm = 8.53746e+13
Info in <Minuit2>:             requested : edmval = 2e-05
Info in <Minuit2>: matrix forced pos-def by adding to diagonal : padd = 90.4234
Info in <Minuit2>: MnHesse: matrix was forced pos. def. 
Info in <Minuit2>: VariableMetricBuilder: Tolerance is not sufficient, continue the minimization
Info in <Minuit2>: Current  Edm is : edm = 1.76481e+13
Info in <Minuit2>: Required Edm is : edmval = 2e-05
Info in <Minuit2>: VariableMetricBuilder: no improvement in line search
Info in <Minuit2>: VariableMetricBuilder: iterations finish without convergence.
Info in <Minuit2>: VariableMetricBuilder : edm = 7.05923e+13
Info in <Minuit2>:             requested : edmval = 2e-05
Info in <Minuit2>: VariableMetricBuilder: FunctionMinimum is invalid after second try
Info in <Minuit2>: Minuit2Minimizer::Minimize : Minimization did NOT converge, Edm is above max

Root version: 5.30/00-rc1

Thanks.

Hi,

Can you please try to use SetPrintLevel(0) ? It will still print the error messages in that case ?
Thank you
Lorenzo

Hi,

I have a very similar problem: A Minuit2 minimizer (obtained via the plugin manager), which always gives an output, even at print level -1. Other print levels seem to increase the verbosity, but I really would like to have the minimizer completely silent.

Is there anything I can do?

ROOT version is 5-32-00.

Thanks a lot,

Sven

Hi,

PrintLevel = -1 is not a valid value for Minuit2, and I think at the moment setting it to -1 you get a default case, where the info messages are not suppressed. Please try to use a value = 0.
In the meantime, I could fix in Minuit2 to consider all the cases with the print level < 0 to be equivalent to the 0 case.

Lorenzo

Hi Lorenzo,

with print level 0, I get at least as much output as with -1. Even messages starting with

Info in …

appear. Any ideas of what might be wrong?

Cheers,

Sven

Hi,
Very strange, the message of the type:
"Info in "

should not appear if printLevel is zero (at least is not happening in all my tests).
Could you post an example reproducing this problem, or if this is too complicated, it is possible at least to see your code,

Lorenzo

Hi Lorenzo,

while trying to prepare an example for you, I somehow got rid of the info messages from Minuit2. However, what still remains are messages of the following type (even at print level 0):

Could it be that this warning is never suppressed?

Cheers,

Sven

I see the same thing, even with print level 0. Seems like setting the print level doesn’t have any influence on whether “EDM is above max tolerance…” is printed or not from a quick glance here: http://root.cern.ch/svn/root/trunk/math/minuit2/src/VariableMetricBuilder.cxx

Noel

1 Like

Hi,

Yes you are right, I will now remove this message for the next ROOT version. Thank you for finding and reporting this issue,

Best Regards

Lorenzo