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, Филадельфия, Пенсильвания.