fmin_bfgs#
- scipy.optimize.fmin_bfgs(f, x0, fprime=None, args=(), gtol=1e-05, norm=inf, эпсилон=np.float64(1.4901161193847656e-08), maxiter=None, full_output=0, disp=1, retall=0, callback=None, xrtol=0, c1=0.0001, c2=0.9, hess_inv0=None)[источник]#
Минимизируйте функцию с использованием алгоритма BFGS.
- Параметры:
- fcallable
f(x,*args) Целевая функция для минимизации.
- x0ndarray
Начальное приближение, форма (n,)
- fprimecallable
f'(x,*args), опционально Градиент f.
- argsкортеж, необязательный
Дополнительные аргументы, передаваемые в f и fprime.
- gtolfloat, опционально
Успешно завершить, если норма градиента меньше gtol
- normfloat, опционально
Порядок нормы (Inf - максимум, -Inf - минимум)
- эпсилонint или ndarray, опционально
Если fprime аппроксимируется, используйте это значение для размера шага.
- callbackвызываемый объект, необязательный
Необязательная пользовательская функция для вызова после каждой итерации. Вызывается как
callback(xk), гдеxkявляется текущим вектором параметров.- maxiterint, необязательный
Максимальное количество итераций для выполнения.
- full_outputbool, необязательно
Если True, возвращает
fopt,func_calls,grad_calls, иwarnflagв дополнение кxopt.- dispbool, необязательно
Выводить сообщение о сходимости, если True.
- retallbool, необязательно
Возвращать список результатов на каждой итерации, если True.
- xrtolfloat, по умолчанию: 0
Относительная погрешность для x. Успешно завершить, если размер шага меньше, чем
xk * xrtolгдеxkявляется текущим вектором параметров.- c1float, по умолчанию: 1e-4
Параметр для правила условия Армихо.
- c2float, по умолчанию: 0.9
Параметр для правила условия кривизны.
- hess_inv0None или ndarray, опционально``
Начальная оценка обратной матрицы Гессе, форма (n, n). Если None (по умолчанию), то используется единичная матрица.
- fcallable
- Возвращает:
- xoptndarray
Параметры, минимизирующие f, т.е.,
f(xopt) == fopt.- foptfloat
Минимальное значение.
- goptndarray
Значение градиента в минимуме, f’(xopt), которое должно быть близко к 0.
- Boptndarray
Значение 1/f’’(xopt), т.е. обратная матрица Гессе.
- func_callsint
Количество выполненных вызовов функции.
- grad_callsint
Количество вызовов градиента.
- warnflagцелое число
1 : Превышено максимальное количество итераций. 2 : Градиент и/или вызовы функций не изменяются. 3 : Обнаружен результат NaN.
- allvecslist
Значение xopt на каждой итерации. Возвращается только если retall равно True.
Смотрите также
minimizeИнтерфейс к алгоритмам минимизации для многомерных функций. См.
method='BFGS'в частности.
Примечания
Оптимизировать функцию, f, градиент которого задаётся fprime используя квази-ньютоновский метод Бройдена-Флетчера-Гольдфарба-Шанно (BFGS).
Параметры c1 и c2 должно удовлетворять
0 < c1 < c2 < 1.Ссылки
Wright и Nocedal 'Численная оптимизация', 1999, стр. 198.
Примеры
>>> import numpy as np >>> from scipy.optimize import fmin_bfgs >>> def quadratic_cost(x, Q): ... return x @ Q @ x ... >>> x0 = np.array([-3, -4]) >>> cost_weight = np.diag([1., 10.]) >>> # Note that a trailing comma is necessary for a tuple with single element >>> fmin_bfgs(quadratic_cost, x0, args=(cost_weight,)) Optimization terminated successfully. Current function value: 0.000000 Iterations: 7 # may vary Function evaluations: 24 # may vary Gradient evaluations: 8 # may vary array([ 2.85169950e-06, -4.61820139e-07])
>>> def quadratic_cost_grad(x, Q): ... return 2 * Q @ x ... >>> fmin_bfgs(quadratic_cost, x0, quadratic_cost_grad, args=(cost_weight,)) Optimization terminated successfully. Current function value: 0.000000 Iterations: 7 Function evaluations: 8 Gradient evaluations: 8 array([ 2.85916637e-06, -4.54371951e-07])