Page 166 - 6734
P. 166

•    minimizer_kwargs – аргументи, які передаються локальному
                мінімізатору. Для пришвидшення можна також передавати
                мінімізатору похідні функції (Якобіан, Гессіан);
           •    take_step – замінює функцію кроку за замовчуванням;
           •    accept_test – визначає тест, який використовується для
                прийняття або відхилення кроку;
           •    callback – функція, яка викликається, коли знайдено
                локальний мінімум.
           import numpy as np
           from scipy.optimize import basinhopping

           def f(x): # функція двох змінних
               y = np.cos(14.5*x[0]-
           0.3)+(x[1]+0.2)*x[1]+(x[0]+0.2)*x[0]
               #y=1 + 2*x[0] + 2*x[1] # (тільки для тестування
           accept_test. Див. нижче)
               return y # для пришвидшення пошуку мінімуму
           функція разом зі значенням може також повертати
           градієнт (див. документацію)

           ret = basinhopping(func=f, x0=[0.0, 0.0]) # знайти
           мінімум
           print ret['x'], ret['fun']

           class MyBounds(object): # реалізує границі проблеми
               def __init__(self, xmax=[1.1, 1.1], xmin=[-1.1, -
           1.1] ):
                   self.xmax = np.array(xmax) # максимум для x
                   self.xmin = np.array(xmin) # мінімум для x
               def __call__(self, **kwargs):
                   x = kwargs["x_new"]
                   tmax = bool(np.all(x <= self.xmax)) # True,
           якщо x менше рівне максимуму
                   tmin = bool(np.all(x >= self.xmin)) # True,
                                         165
   161   162   163   164   165   166   167   168   169   170   171