Page 167 - 6734
P. 167

якщо x більше рівне мінімуму
                   return tmax and tmin # якщо False (за
           границями), то мінімум не приймається

           def print_fun(x, f, accepted): # викликається, коли
           знайдено лок. мінімум
               print "Loc. min.", x, f, accepted # координати,
           значення функції, чи мінімум приймається

           ret = basinhopping(func=f, x0=[0.0, 0.0], niter=5,
           stepsize=0.1, minimizer_kwargs = {"method": "L-BFGS-
           B"}, accept_test=MyBounds(), callback=print_fun) #
           знайти мінімум
           print ret['x'], ret['fun']

           import matplotlib.pyplot as plt
           from mpl_toolkits.mplot3d import Axes3D
           ax=Axes3D(plt.figure()) # система координат
           X, Y = np.meshgrid(np.linspace(-1,1), np.linspace(-
           1,1)); Z=f([X,Y])
           ax.plot_wireframe(X, Y, Z) # каркасна поверхня
           ax.scatter(ret['x'][0], ret['x'][1], ret['fun'],
           c='k') # мінімум
           ax.set_xlabel('X0'),ax.set_ylabel('X1'),ax.set_zlabel
           ('Y');plt.show()
           [-0.19506755 -0.10000001] -1.01087618444
           Loc. min. [-1.05352142 -0.09999747] -0.102110348616
           True
           Loc. min. [-0.19506756 -0.1       ] -1.01087618444
           True
           Loc. min. [-0.19506756 -0.1       ] -1.01087618444
           True
           Loc. min. [ 0.23417127 -0.10000023] -0.907266719691
           True

                                         166
   162   163   164   165   166   167   168   169   170   171   172