minimize(method='trust-constr')#

scipy.optimize.minimize(fun, x0, args=(), метод=None, jac=None, hess=None, hessp=None, границы=None, ограничения=(), tol=None, callback=None, опции=None)

Минимизация скалярной функции с ограничениями.

Параметры:
gtolfloat, опционально

Допуск для завершения по норме градиента Лагранжа. Алгоритм завершится, когда как бесконечная норма (т.е., максимальное абсолютное значение) градиента Лагранжа, так и нарушение ограничений будут меньше, чем gtol. По умолчанию 1e-8.

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

Допуск для завершения по изменению независимой переменной. Алгоритм завершится, когда tr_radius < xtol, где tr_radius это радиус области доверия, используемой в алгоритме. По умолчанию 1e-8.

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

Порог параметра барьера для завершения алгоритма. При наличии ограничений-неравенств алгоритм завершится только когда параметр барьера станет меньше barrier_tol. По умолчанию 1e-8.

sparse_jacobian{bool, None}, опционально

Определяет, как представлять якобианы ограничений. Если bool, то якобианы всех ограничений будут преобразованы в соответствующий формат. Если None (по умолчанию), то якобианы не будут преобразованы, но алгоритм может продолжить работу только если они все имеют одинаковый формат.

initial_tr_radius: float, optional

Начальный радиус доверия. Радиус доверия задаёт максимальное расстояние между точками решения в последовательных итерациях. Он отражает доверие алгоритма к локальной аппроксимации задачи оптимизации. Для точной локальной аппроксимации радиус доверия должен быть большим, а для аппроксимации, справедливой только вблизи текущей точки, он должен быть малым. Радиус доверия автоматически обновляется в процессе оптимизации, с initial_tr_radius является его начальным значением. По умолчанию равно 1 (рекомендуется в [1], стр. 19).

начальный штраф за ограниченияfloat, опционально

Начальный параметр штрафа ограничений. Параметр штрафа используется для балансировки требований уменьшения целевой функции и удовлетворения ограничений. Он используется для определения функции заслуг: merit_function(x) = fun(x) + constr_penalty * constr_norm_l2(x), где constr_norm_l2(x) является нормой l2 вектора, содержащего все ограничения. Функция заслуг используется для принятия или отклонения пробных точек и constr_penalty взвешивает две конфликтующие цели уменьшения целевой функции и ограничений. Штраф автоматически обновляется в процессе оптимизации, с initial_constr_penalty будучи его начальным значением. По умолчанию равно 1 (рекомендуется в [1], стр. 19).

initial_barrier_parameter, initial_barrier_tolerance: float, optional

Начальный параметр барьера и начальная точность для подзадачи барьера. Оба используются только при наличии ограничений-неравенств. Для решения задач оптимизации min_x f(x) с ограничениями в виде неравенств c(x) <= 0 алгоритм вводит дополнительные переменные, решая задачу min_(x,s) f(x) + barrier_parameter*sum(ln(s)) с учетом ограничений равенства c(x) + s = 0 вместо исходной задачи. Эта подзадача решается для убывающих значений barrier_parameter и с уменьшающимися допусками для завершения, начиная с initial_barrier_parameter для параметра барьера и initial_barrier_tolerance для допуска барьера. По умолчанию 0.1 для обоих значений (рекомендуется в [1] стр. 19). Также обратите внимание, что barrier_parameter и barrier_tolerance обновляются с тем же предмножителем.

factorization_methodстрока или None, опционально

Метод для факторизации Якобиана ограничений. Используйте None (по умолчанию) для автоматического выбора или один из:

  • 'NormalEquation' (требует scikit-sparse)

  • ‘AugmentedSystem’

  • 'QRFactorization'

  • ‘SVDFactorization’

Методы ‘NormalEquation’ и ‘AugmentedSystem’ могут использоваться только с разреженными ограничениями. Проекции, требуемые алгоритмом, будут вычисляться с использованием, соответственно, подхода нормального уравнения и подхода расширенной системы, объяснённых в [1]. 'NormalEquation' вычисляет факторизацию Холецкого для A A.T и ‘AugmentedSystem’ выполняет LU-факторизацию расширенной системы. Обычно они дают схожие результаты. ‘AugmentedSystem’ используется по умолчанию для разреженных матриц.

Методы 'QRFactorization' и 'SVDFactorization' могут использоваться только с плотными ограничениями. Они вычисляют требуемые проекции используя, соответственно, QR и SVD разложения. Метод 'SVDFactorization' может работать с матрицами Якоби с недостаточным рангом строк и будет использоваться всякий раз, когда другие методы разложения терпят неудачу (что может подразумевать преобразование разреженных матриц в плотный формат при необходимости). По умолчанию для плотных матриц используется 'QRFactorization'.

finite_diff_rel_stepNone или array_like, опционально

Относительный размер шага для аппроксимации конечными разностями.

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

Максимальное количество итераций алгоритма. По умолчанию 1000.

verbose{0, 1, 2, 3}, опционально

Уровень детализации алгоритма:

  • 0 (по умолчанию) : работать без вывода сообщений.

  • 1 : отобразить отчет о завершении.

  • 2 : отображать прогресс во время итераций.

  • 3 : отображать прогресс во время итераций (более полный отчет).

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

Если True (по умолчанию), то verbose Существуют разные соглашения о значениях входных аргументов

workersint, вызываемый объект, подобный отображению, опционально

Вызываемый объект, подобный отображению, такой как multiprocessing.Pool.map для параллельного вычисления любой численной производной. Это вычисление выполняется как workers(fun, iterable).

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

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

  2. Все числа вызовов функции, Якобиана или Гессиана соответствуют числам фактических вызовов Python-функций. Это означает, например, что если Якобиан оценивается конечными разностями, то число вычислений Якобиана будет равно нулю, а число вычислений функции будет увеличено на все вызовы во время оценки конечными разностями.

xndarray, форма (n,)

Решение найдено.

оптимальностьfloat

Норма бесконечности градиента Лагранжа в решении.

constr_violationfloat

Максимальное нарушение ограничения в решении.

funfloat

Целевая функция в решении.

gradndarray, форма (n,)

Градиент целевой функции в решении.

lagrangian_gradndarray, форма (n,)

Градиент функции Лагранжа в решении.

nitint

Общее количество итераций.

nfevцелое число

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

njevцелое число

Количество вычислений градиента целевой функции.

nhevцелое число

Количество оценок гессиана целевой функции.

cg_niterint

Общее количество итераций метода сопряжённых градиентов.

метод{‘equality_constrained_sqp’, ‘tr_interior_point’}

Используемый метод оптимизации.

constrlist of ndarray

Список значений ограничений в решении.

jacсписок {ndarray, разреженный массив}

Список матриц Якоби ограничений в решении.

vlist of ndarray

Список множителей Лагранжа для ограничений в решении. Для ограничения-неравенства положительный множитель означает, что активна верхняя граница, отрицательный множитель означает, что активна нижняя граница, а нулевой множитель означает, что ограничение не активно.

constr_nfevсписок целых чисел

Количество вычислений ограничений для каждого из ограничений.

constr_njevсписок целых чисел

Количество вычислений матрицы Якоби для каждого из ограничений.

constr_nhevсписок целых чисел

Количество вычислений гессиана для каждого из ограничений.

tr_radiusfloat

Радиус области доверия на последней итерации.

constr_penaltyfloat

Параметр штрафа на последней итерации, см. начальный штраф за ограничения.

barrier_tolerancefloat

Допуск для подзадачи барьера на последней итерации. Только для задач с ограничениями-неравенствами.

barrier_parameterfloat

Параметр барьера на последней итерации. Только для задач с ограничениями-неравенствами.

execution_timefloat

Общее время выполнения.

messagestr

Сообщение о завершении.

status{0, 1, 2, 3, 4}

Статус завершения:

  • 0 : Превышено максимальное количество вычислений функции.

  • 1 : gtol условие завершения удовлетворено.

  • 2 : xtol условие завершения удовлетворено.

  • 3 : callback функция запросила завершение.

  • 4 : Нарушение ограничения превышает 'gtol'.

Изменено в версии 1.15.0: If the constraint violation exceeds gtol, затем result.success теперь будет False.

cg_stop_condint

Причина завершения подзадачи CG на последней итерации:

  • 0 : подзадача CG не вычислена.

  • 1 : Достигнут предел итераций.

  • 2 : Достигнута граница области доверия.

  • 3 : Обнаружена отрицательная кривизна.

  • 4 : Допуск был удовлетворён.

Ссылки

[1] (1,2,3,4)

Конн, А. Р., Гулд, Н. И., и Тойнт, П. Л. Методы доверительной области. 2000. Siam. стр. 19.