minimize(method='SLSQP')#

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

Минимизация скалярной функции одной или нескольких переменных с использованием последовательного программирования методом наименьших квадратов (SLSQP).

Параметры:
ftolfloat

Целевая точность для значения f в критерии остановки. Это значение контролирует окончательную точность проверки различных условий оптимальности; градиент лагранжиана и абсолютная сумма нарушений ограничений должны быть меньше ftol. Аналогично, вычисленный размер шага и изменения целевой функции проверяются относительно этого значения. По умолчанию 1e-6.

epsfloat

Шаг, используемый для численного приближения якобиана.

dispbool

Установите True для вывода сообщений о сходимости. Если False, подробность вывода игнорируется и устанавливается в 0.

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

Максимальное количество итераций. Значение по умолчанию: 100.

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

Если jac in ['2-point', '3-point', 'cs'] относительный размер шага для использования при численном приближении jac. Абсолютный размер шага вычисляется как h = rel_step * sign(x) * max(1, abs(x)), возможно, скорректированный для соответствия границам. Для method='3-point' знак h игнорируется. Если None (по умолчанию), то шаг выбирается автоматически.

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

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

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

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

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

Примечания

Множители ККТ возвращаются в OptimizeResult.multipliers атрибут как массив NumPy. Обозначая размерность ограничений равенства через meq, а также неравенств ограничений с mineq, тогда возвращаемый срез массива m[:meq] содержит множители для ограничений-равенств, а оставшиеся m[meq:meq + mineq] содержит множители для ограничений-неравенств. Множители, соответствующие граничным неравенствам, не возвращаются. См. [1] стр. 321 или [2] для объяснения того, как интерпретировать эти множители. Внутренняя QP-задача решается с использованием методов, приведённых в [3] Глава 25.

Обратите внимание, что если новые стили NonlinearConstraint или LinearConstraint были использованы, тогда minimize преобразует их сначала в старые словари ограничений. Возможно, что одно новое ограничение одновременно содержит как неравенства, так и равенства. Это означает, что если есть смешение внутри одного ограничения, то возвращаемый список множителей будет иметь длину, отличную от исходных новых ограничений.

Ссылки

[1]

Nocedal, J., и S J Wright, 2006, “Numerical Optimization”, Springer, Нью-Йорк.

[2]

Kraft, D., "A software package for sequential quadratic programming", 1988, Tech. Rep. DFVLR-FB 88-28, DLR German Aerospace Center, Germany.

[3]

Лоусон, К. Л., и Р. Дж. Хэнсон, 1995, "Решение задач наименьших квадратов", SIAM, Филадельфия, Пенсильвания.