scipy.optimize.

fmin#

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

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

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

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

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

x0ndarray

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

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

Дополнительные аргументы, передаваемые в func, т.е., f(x,*args).

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

Абсолютная ошибка в xopt между итерациями, допустимая для сходимости.

ftolчисло, опционально

Абсолютная ошибка в func(xopt) между итерациями, допустимая для сходимости.

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

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

maxfunчисло, опционально

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

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

Установите True, если требуются выходные данные fopt и warnflag.

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

Установите True для вывода сообщений о сходимости.

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

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

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

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

initial_simplexarray_like формы (N + 1, N), опционально

Начальный симплекс. Если задан, переопределяет x0. initial_simplex[j,:] должен содержать координаты j-й вершины N+1 вершины в симплексе, где N является размерностью.

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

Параметр, минимизирующий функцию.

foptfloat

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

iterint

Количество выполненных итераций.

funcallsint

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

warnflagint

1 : Максимальное количество выполненных вычислений функции. 2 : Достигнуто максимальное количество итераций.

allvecslist

Решение на каждой итерации.

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

minimize

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

Примечания

Использует симплексный алгоритм Нелдера-Мида для нахождения минимума функции одной или нескольких переменных.

Этот алгоритм имеет долгую историю успешного использования в приложениях. Но обычно он будет медленнее, чем алгоритм, использующий информацию о первой или второй производной. На практике он может иметь плохую производительность в задачах высокой размерности и не является устойчивым для минимизации сложных функций. Кроме того, в настоящее время нет полной теории, описывающей, когда алгоритм успешно сойдётся к минимуму, или как быстро он это сделает, если сойдётся. Для сходимости должны быть выполнены оба критерия ftol и xtol.

Ссылки

[1]

Nelder, J.A. and Mead, R. (1965), “A simplex method for function minimization”, The Computer Journal, 7, pp. 308-313

[2]

Райт, М.Х. (1996), «Методы прямого поиска: когда-то презираемые, теперь уважаемые», в Численный анализ 1995, Труды конференции по численному анализу в Данди 1995, Д.Ф. Гриффитс и Г.А. Уотсон (ред.), Addison Wesley Longman, Харлоу, Великобритания, стр. 191-208.

Примеры

>>> def f(x):
...     return x**2
>>> from scipy import optimize
>>> minimum = optimize.fmin(f, 1)
Optimization terminated successfully.
         Current function value: 0.000000
         Iterations: 17
         Function evaluations: 34
>>> minimum[0]
-8.8817841970012523e-16