Page 160 - 6734
P. 160

•    детерміновані;
           •    стохастичні;
           •    комбіновані.

               За порядком похідної, що обчислюється, поділяються на

           •    прямі (обчислюються тільки значення функції);
           •    першого порядку (градієнтні);
           •    другого порядку.

               Інтерфейсом  для  оптимізації  функції  однієї  змінної  різними
           методами  є  minimize_scalar  [14].  Розглянемо  локальну
           оптимізацію  скалярної  функції  (однієї  змінної)
                   методом Брента.
           import numpy as np
           from scipy.optimize import minimize_scalar, fminbound
           def f(x): # функція однієї змінної (цільова функція)
               return np.sin(x)+np.cos(x**2)
           res = minimize_scalar(f, bounds=(-3, 3),
           method='bounded') # знайти мінімум f(x) в заданих
           границях. Критерій пошуку - мінімум, допустима
           множина x від -3 до 3
           print "argmin=",res.x

           argmin = fminbound(f, -3, 3) # або так
           print "argmin=", argmin
           argmax = fminbound(lambda x: -f(x), -3, 3) # знайти
           максимум f(x) в заданих границях
           print "argmax=", argmax

           import matplotlib.pyplot as plt
           x=np.linspace(-3,3,100)
           plt.plot(x,f(x),'k') # графік
           plt.scatter([argmin,argmax], [f(argmin),f(argmax)],
           linewidths=[3,3]) # локальні екстремуми
                                         159
   155   156   157   158   159   160   161   162   163   164   165