0

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.

0 Answers0