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с полями, описанными ниже. Обратите внимание на следующее:Все значения, соответствующие ограничениям, упорядочены так, как они были переданы решателю. А значения, соответствующие границы накладываются ограничения после другие ограничения.
Все числа вызовов функции, Якобиана или Гессиана соответствуют числам фактических вызовов 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 : Допуск был удовлетворён.
Ссылки