scipy.optimize.

fmin_powell#

scipy.optimize.fmin_powell(функция, x0, args=(), xtol=0.0001, ftol=0.0001, maxiter=None, maxfun=None, full_output=0, disp=1, retall=0, callback=None, direc=None)[источник]#

Минимизировать функцию с использованием модифицированного метода Пауэлла.

Этот метод использует только значения функции, а не производные.

Параметры:
функциявызываемая функция f(x,*args)

Целевая функция для минимизации.

x0ndarray

Начальное приближение.

argsкортеж, необязательный

Дополнительные аргументы, передаваемые в func.

xtolfloat, опционально

Допуск ошибки линейного поиска.

ftolfloat, опционально

Относительная ошибка в func(xopt) допустимый для сходимости.

maxiterint, необязательный

Максимальное количество итераций для выполнения.

maxfunint, необязательный

Максимальное количество вычислений функции.

full_outputbool, необязательно

Если True, fopt, xi, direc, iter, funcalls, и warnflag возвращаются.

dispbool, необязательно

Если True, выводить сообщения о сходимости.

retallbool, необязательно

Если True, возвращает список решений на каждой итерации.

callbackвызываемый объект, необязательный

Необязательная пользовательская функция, вызываемая после каждой итерации. Вызывается как callback(xk), где xk является текущим вектором параметров.

direcndarray, необязательно

Начальный шаг подгонки и порядок параметров заданы как массив (N, N), где N — количество подбираемых параметров в x0. По умолчанию размер шага 1.0 подгонка всех параметров одновременно (np.eye((N, N))). Чтобы предотвратить начальное рассмотрение значений на шаге или изменить начальный размер шага, установите 0 или желаемый размер шага в J-й позиции в M-м блоке, где J - позиция в x0 и M — желаемый шаг оценки, с шагами, оцениваемыми в порядке индексов. Размер шага и порядок будут свободно меняться по мере минимизации.

Возвращает:
xoptndarray

Параметр, который минимизирует функция.

foptчисло

Значение функции в минимуме: fopt = func(xopt).

direcndarray

Текущее направление установлено.

iterint

Количество итераций.

funcallsint

Количество выполненных вызовов функций.

warnflagint
Целочисленный флаг предупреждения:

1 : Максимальное количество вычислений функции. 2 : Максимальное количество итераций. 3 : Обнаружен результат NaN. 4 : Результат выходит за предоставленные границы.

allvecslist

Список решений на каждой итерации.

Смотрите также

minimize

Интерфейс к алгоритмам безусловной минимизации для многомерных функций. См. метод 'Powell' в частности.

Примечания

Использует модификацию метода Пауэлла для нахождения минимума функции N переменных. Метод Пауэлла — это метод сопряжённых направлений.

Алгоритм имеет два цикла. Внешний цикл просто итерирует по внутреннему циклу. Внутренний цикл минимизирует по каждому текущему направлению в наборе направлений. В конце внутреннего цикла, если выполняются определенные условия, направление, которое дало наибольшее уменьшение, отбрасывается и заменяется разностью между текущей оценкой x и оценкой x с начала внутреннего цикла.

Технические условия для замены направления наибольшего возрастания сводятся к проверке, что

  1. Дальнейшее улучшение невозможно вдоль направления наибольшего роста на этой итерации.

  2. Направление наибольшего увеличения составляло достаточно большую долю уменьшения значения функции на этой итерации внутреннего цикла.

Ссылки

Powell M.J.D. (1964) An efficient method for finding the minimum of a function of several variables without calculating derivatives, Computer Journal, 7 (2):155-162.

Пресс У., Тьюколски С.А., Веттерлинг У.Т. и Флэннери Б.П.: Численные рецепты (любое издание), Издательство Кембриджского университета

Примеры

>>> def f(x):
...     return x**2
>>> from scipy import optimize
>>> minimum = optimize.fmin_powell(f, -1)
Optimization terminated successfully.
         Current function value: 0.000000
         Iterations: 2
         Function evaluations: 16
>>> minimum
array(0.0)