scipy.optimize.

minimize_scalar#

scipy.optimize.minimize_scalar(fun, скобка=None, границы=None, args=(), метод=None, tol=None, опции=None)[источник]#

Локальная минимизация скалярной функции одной переменной.

Параметры:
funcallable

Целевая функция. Скалярная функция, должна возвращать скаляр.

Предположим, что вызываемый объект имеет сигнатуру f0(x, *my_args, **my_kwargs), где my_args и my_kwargs являются обязательными позиционными и ключевыми аргументами. Вместо передачи f0 в качестве вызываемого объекта, оберните его, чтобы он принимал только x; например, передать fun=lambda x: f0(x, *my_args, **my_kwargs) как вызываемый объект, где my_args (кортеж) и my_kwargs (dict) были собраны перед вызовом этой функции.

скобкаsequence, optional

Для методов 'brent' и 'golden', bracket определяет интервал скобок и является обязательным. Либо тройка (xa, xb, xc) удовлетворяющий xa < xb < xc и func(xb) < func(xa) and  func(xb) < func(xc), или пара (xa, xb) для использования в качестве начальных точек для поиска скобки вниз по склону (см. scipy.optimize.bracket). Минимизатор res.x не обязательно будет удовлетворять xa <= res.x <= xb.

границыsequence, optional

Для метода 'bounded', границы является обязательным и должен иметь два конечных элемента, соответствующих границам оптимизации.

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

Дополнительные аргументы, передаваемые в целевую функцию.

методstr или callable, опционально

Тип решателя. Должен быть одним из:

По умолчанию “Bounded”, если заданы границы, и “Brent” в противном случае. См. раздел ‘Notes’ для подробностей о каждом решателе.

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

Допуск для завершения. Для детального управления используйте специфичные для решателя опции.

опцииdict, optional

Словарь опций решателя.

maxiterint

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

dispbool

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

См. show_options для специфичных решателю опций.

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

Результат оптимизации, представленный как OptimizeResult объект. Важные атрибуты: x массив решения, success логический флаг, указывающий, успешно ли завершился оптимизатор, и message который описывает причину завершения. См. OptimizeResult для описания других атрибутов.

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

minimize

Интерфейс к алгоритмам минимизации для скалярных многомерных функций

show_options

Дополнительные параметры, принимаемые решателями

Примечания

В этом разделе описаны доступные решатели, которые можно выбрать с помощью параметра 'method'. Методом по умолчанию является "Bounded" Метод Брента, если границы передаются и неограничены "Brent" в противном случае.

Метод Brent использует алгоритм Брента [1] для поиска локального минимума. Алгоритм использует обратную параболическую интерполяцию, когда это возможно, для ускорения сходимости метода золотого сечения.

Метод Золотой использует технику золотого сечения [1]. Использует аналог метода бисекции для уменьшения интервала. Обычно предпочтительнее использовать Brent метод.

Метод Ограниченный может выполнять ограниченную минимизацию [2] [3]. Он использует метод Брента для поиска локального минимума в интервале x1 < xopt < x2.

Обратите внимание, что методы Брента и Золотого сечения не гарантируют успех, если не задан допустимый bracket предоставляется тройка. Если трёхточечный интервал не может быть найден, рассмотрите scipy.optimize.minimize. Также, все методы предназначены только для локальной минимизации. Когда целевая функция имеет более одного локального минимума, рассмотрите Глобальная оптимизация.

Пользовательские минимизаторы

Может быть полезно передать пользовательский метод минимизации, например, при использовании некоторого интерфейса библиотеки для minimize_scalar. Вы можете просто передать вызываемый объект в качестве method параметр.

Вызываемый объект вызывается как method(fun, args, **kwargs, **options) где kwargs соответствует любым другим параметрам, переданным в minimize (такие как bracket, tol, и т.д.), за исключением опции dict, который имеет свое содержимое, также передаваемое как метод параметры попарно. Метод должен возвращать OptimizeResult объект.

Предоставленный метод вызываемый объект должен уметь принимать (и, возможно, игнорировать) произвольные параметры; набор параметров, принимаемых minimize может расширяться в будущих версиях, и тогда эти параметры будут переданы методу. Пример можно найти в руководстве по scipy.optimize.

Добавлено в версии 0.11.0.

Ссылки

[1] (1,2)

Press, W., S.A. Teukolsky, W.T. Vetterling, и B.P. Flannery. Numerical Recipes in C. Cambridge University Press.

[2]

Forsythe, G.E., M. A. Malcolm, и C. B. Moler. "Компьютерные методы для математических вычислений." Prentice-Hall Series in Automatic Computation 259 (1977).

[3]

Brent, Richard P. Algorithms for Minimization Without Derivatives. Courier Corporation, 2013.

Примеры

Рассмотрим задачу минимизации следующей функции.

>>> def f(x):
...     return (x - 2) * x * (x + 2)**2

Используя Brent метод, мы находим локальный минимум как:

>>> from scipy.optimize import minimize_scalar
>>> res = minimize_scalar(f)
>>> res.fun
-9.9149495908

Минимизатор:

>>> res.x
1.28077640403

Используя Ограниченный метод, мы находим локальный минимум с заданными границами как:

>>> res = minimize_scalar(f, bounds=(-3, -1), method='bounded')
>>> res.fun  # minimum
3.28365179850e-13
>>> res.x  # minimizer
-2.0000002026