I'm minimizing a multiple-variable function using scipy.optimize.basinhopping
as part of maximum entropy optimization. It works but occasionally I get local minimization failure warning messages. I'm trying to figure out whether they can be ignored:
basinhopping step 0: f 4.46112e+06
basinhopping step 1: f 4.4611e+06 trial_f 4.4611e+06 accepted 1 lowest_f 4.4611e+06
found new global minimum on step 1 with function value 4.4611e+06
basinhopping step 2: f 4.4611e+06 trial_f 4.4611e+06 accepted 1 lowest_f 4.4611e+06
found new global minimum on step 2 with function value 4.4611e+06
basinhopping step 3: f 4.4611e+06 trial_f 4.4611e+06 accepted 1 lowest_f 4.4611e+06
found new global minimum on step 3 with function value 4.4611e+06
basinhopping step 4: f 4.4611e+06 trial_f 4.4611e+06 accepted 1 lowest_f 4.4611e+06
found new global minimum on step 4 with function value 4.4611e+06
basinhopping step 5: f 4.4611e+06 trial_f 4.4611e+06 accepted 1 lowest_f 4.4611e+06
found new global minimum on step 5 with function value 4.4611e+06
basinhopping step 6: f 4.4611e+06 trial_f 4.4611e+06 accepted 1 lowest_f 4.4611e+06
found new global minimum on step 6 with function value 4.4611e+06
warning: basinhopping: local minimization failure
basinhopping step 7: f 4.4611e+06 trial_f 4.4611e+06 accepted 1 lowest_f 4.4611e+06
found new global minimum on step 7 with function value 4.4611e+06
<snip>
At the end of the optimization, I get this:
fun: 4461103.852803631
lowest_optimization_result: fun: 4461103.852803631
hess_inv: <8x8 LbfgsInvHessProduct with dtype=float64>
jac: array([ 0.021769, 0.028649, -0.000128, -0.056923, -0.002773, -0.045319, -0.013719, -0.02872 ])
message: 'ABNORMAL_TERMINATION_IN_LNSRCH'
nfev: 20
nit: 0
njev: 20
status: 2
success: False
x: array([ -31870.962047, -24718.132626, -29847.253508, -141243.035888, 172068.711537, 48290.798176, -7548.406846, -736.399023])
message: ['requested number of basinhopping iterations completed successfully']
minimization_failures: 5
nfev: 1230
nit: 100
njev: 1230
x: array([ -31870.962047, -24718.132626, -29847.253508, -141243.035888, 172068.711537, 48290.798176, -7548.406846, -736.399023])
It seems the global search worked but the local optimization failed 5 times.
Here's a link to the optimization result. The red curve is the maximum entropy optimization result using the green curve as the initial guess, note the artifact at 69 keV.
I'm thinking the artifact might be related to the 'local minimization failure' warning. If so, what could be done to address the location optimization failure? I would appreciate any thoughts on how to investigate this.