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