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 с начала внутреннего цикла.
Технические условия для замены направления наибольшего возрастания сводятся к проверке, что
Дальнейшее улучшение невозможно вдоль направления наибольшего роста на этой итерации.
Направление наибольшего увеличения составляло достаточно большую долю уменьшения значения функции на этой итерации внутреннего цикла.
Ссылки
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)