Найдите минимум полу-бесконечно ограниченной многомерной нелинейной функции
Находит минимум задачи, заданной в
b и beq - векторы, A и Aeq матрицы, c (<reservedrangesplaceholder22>), ceq (<reservedrangesplaceholder20>), и Ki (<reservedrangesplaceholder18>) - функции, которые возвращают векторы, и f (<reservedrangesplaceholder16>) - функция , которая возвращает скаляр. f (x), c (x) и ceq (x) могут быть нелинейными функциями. Векторы (или матрицы) Ki (x, wi) ≤ 0 являются непрерывными функциями обоих x и дополнительным набором переменных w 1, w 2,..., wn. Переменные w 1, w 2,..., wn являются векторами максимальной длины два.
x, lb и ub могут быть переданы как векторы или матрицы; см. Матричные аргументы.
x = fseminf(fun,x0,ntheta,seminfcon)
x = fseminf(fun,x0,ntheta,seminfcon,A,b)
x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq)
x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub)
x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub,options)
x = fseminf(problem)
[x,fval] = fseminf(...)
[x,fval,exitflag] = fseminf(...)
[x,fval,exitflag,output] = fseminf(...)
[x,fval,exitflag,output,lambda] = fseminf(...)
fseminf
находит минимум полу-бесконечно ограниченной скалярной функции нескольких переменных, начиная с начальной оценки. Цель состоит в том, чтобы минимизировать f (<reservedrangesplaceholder2>), таким образом, ограничения держатся для всех возможных значений <reservedrangesplaceholder1> <reservedrangesplaceholder0>1 (или wi ∈ ℜ2). Поскольку невозможно вычислить все возможные значения Ki (x,wi), необходимо выбрать область для wi, над которой можно вычислить соответствующим образом выбранный множество значений.
Примечание
Передача дополнительных параметров объясняет, как передать дополнительные параметры целевой функции и нелинейным ограничительным функциям, если это необходимо.
x = fseminf(fun,x0,ntheta,seminfcon)
начинается с x0
и находит минимум функции fun
ограничены ntheta
полуинфинитные ограничения, заданные в seminfcon
.
x = fseminf(fun,x0,ntheta,seminfcon,A,b)
также пытается удовлетворить линейным неравенствам A*x ≤ b
.
x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq)
минимизирует зависимости от линейных равенств Aeq*x = beq
также. Задайте A = []
и b = []
если неравенства не существует.
x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub)
задает набор нижних и верхних границ переменных проектов в x
, так что решение всегда находится в области значений lb
≤ x
≤ ub
.
Примечание
Смотрите Итерации могут нарушать ограничения.
x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub,options)
минимизирует с опциями оптимизации, указанными в options
. Использовать optimoptions
чтобы задать эти опции.
x = fseminf(problem)
находит минимум для problem
, где problem
- структура, описанная в Входные Параметры.
[x,fval] = fseminf(...)
возвращает значение целевой функции fun
в решении x
.
[x,fval,exitflag] = fseminf(...)
возвращает значение exitflag
который описывает условие выхода.
[x,fval,exitflag,output] = fseminf(...)
возвращает структуру output
который содержит информацию об оптимизации.
[x,fval,exitflag,output,lambda] = fseminf(...)
возвращает структуру lambda
поля которого содержат множители Лагранжа в решении x
.
Примечание
Если заданные входные ограничения для задачи несогласованны, выход x
является x0
и выходные fval
является []
.
Входные аргументы функции содержат общие описания аргументов, переданных в fseminf
. В этом разделе приведены подробные сведения о функциях для fun
, ntheta
, options
, seminfcon
, и problem
:
| Функция, которая будет минимизирована. x = fseminf(@myfun,x0,ntheta,seminfcon) где function f = myfun(x) f = ... % Compute function value at x
fun = @(x)sin(x''*x); Если градиент options = optimoptions('fseminf','SpecifyObjectiveGradient',true) затем функция | |
ntheta | Количество полунепрерывных ограничений. | |
options | Опции содержат подробные сведения о функции для | |
| Функция, которая вычисляет вектор нелинейных ограничений неравенства, x = fseminf(@myfun,x0,ntheta,@myinfcon) где function [c,ceq,K1,K2,...,Kntheta,S] = myinfcon(x,S) % Initial sampling interval if isnan(S(1,1)), S = ...% S has ntheta rows and 2 columns end w1 = ...% Compute sample set w2 = ...% Compute sample set ... wntheta = ... % Compute sample set K1 = ... % 1st semi-infinite constraint at x and w K2 = ... % 2nd semi-infinite constraint at x and w ... Kntheta = ...% Last semi-infinite constraint at x and w c = ... % Compute nonlinear inequalities at x ceq = ... % Compute the nonlinear equalities at x
Векторы или матрицы Примечание Потому что функции Optimization Toolbox™ принимают только входы типа Передача дополнительных параметров объясняет, как параметризировать | |
problem |
| Целевая функция |
| Начальная точка для x | |
ntheta | Количество полунепрерывных ограничений | |
seminfcon | Полуинфинитная функция ограничения | |
| Матрица для линейных ограничений неравенства | |
| Вектор для линейных ограничений неравенства | |
| Матрица для линейных ограничений равенства | |
| Вектор для линейных ограничений равенства | |
lb | Вектор нижних границ | |
ub | Вектор верхних границ | |
| 'fseminf' | |
| Опции, созданные с optimoptions |
Входные аргументы функции содержат общие описания аргументов, возвращаемых fseminf
. В этом разделе приведены подробные сведения о функциях для exitflag
, lambda
, и output
:
| Целое число, идентифицирующее причину завершения алгоритма. Ниже списки значения | |
| Функция сходится к решению | |
| Величина направления поиска была меньше заданного допуска, а нарушение ограничений было меньше | |
| Величина производной по направлению была меньше заданного допуска, а нарушение ограничений было меньше | |
| Превышено количество итераций | |
| Алгоритм был остановлен выходной функцией. | |
| Допустимая точка не найдена. | |
| Структура, содержащая множители Лагранжа в решении | |
lower | Нижние границы | |
upper | Верхние границы | |
ineqlin | Линейное неравенство | |
eqlin | Линейные равенства | |
ineqnonlin | Нелинейные неравенства | |
eqnonlin | Нелинейные равенства | |
| Структура, содержащая информацию об оптимизации. Поля структуры: | |
iterations | Количество проделанных итераций | |
funcCount | Количество вычислений функции | |
lssteplength | Размер линии шага поиска относительно направления поиска | |
stepsize | Окончательное перемещение в | |
algorithm | Используемый алгоритм оптимизации | |
constrviolation | Максимум ограничительных функций | |
firstorderopt | Мера оптимальности первого порядка | |
message | Выходное сообщение |
Опции оптимизации, используемые fseminf
. Использовать optimoptions
для установки или изменения options
. Подробную информацию см. в Ссылке по опциям оптимизации.
Некоторые опции отсутствуют в optimoptions
отображение. Эти опции выделены курсивом в следующей таблице. Для получения дополнительной информации см. раздел «Опции представления».
| Сравните поставляемые пользователем производные (градиенты цели или ограничения) с конечными дифференцирующими производными. Выбор следующий Для |
ConstraintTolerance | Допуск завершения на нарушение ограничений, положительную скалярную величину. Значение по умолчанию является Для |
Диагностика | Отобразите диагностическую информацию о функции, которая будет минимизирована или решена. Выбор следующий |
DiffMaxChange | Максимальное изменение переменных для градиентов конечных различий (a положительной скалярной величины). Значение по умолчанию является |
DiffMinChange | Минимальное изменение переменных для градиентов с конечной разностью (a положительной скалярной величины). Значение по умолчанию является |
Display | Level of display (см. Итеративное отображение):
|
FiniteDifferenceStepSize |
Скаляр или векторный коэффициент размера для конечных различий. Когда вы задаете
sign′(x) = sign(x) кроме sign′(0) = 1 . Центральные конечные различия
FiniteDifferenceStepSize расширяется до вектора. Значение по умолчанию является sqrt(eps) для прямых конечных различий и eps^(1/3) для центральных конечных различий.
Для |
FiniteDifferenceType | Конечные различия, используемые для оценки градиентов, либо Алгоритм осторожен, чтобы подчиниться границам при оценке обоих типов конечных различий. Так, например, это может занять различие назад, а не вперед, чтобы избежать оценки в точке вне границ. Для |
FunctionTolerance | Отклонение завершения функции от значения, a положительной скалярной величины. Значение по умолчанию является Для |
FunValCheck | Проверьте, действительны ли целевая функция и значения ограничений. |
MaxFunctionEvaluations | Максимально допустимое количество вычислений функции, положительное целое число. Значение по умолчанию является Для |
MaxIterations | Максимально допустимое количество итераций, положительное целое число. Значение по умолчанию является Для |
MaxSQPIter | Максимально допустимое количество итераций SQP, положительное целое число. Значение по умолчанию является |
OptimalityTolerance |
Допуск завершения по оптимальности первого порядка (a положительной скалярной величины). Значение по умолчанию является Для |
OutputFcn | Задайте одну или несколько пользовательских функций, которые вызываются функциями оптимизации при каждой итерации. Передайте указатель на функцию или cell-массив указателей на функцию. Значением по умолчанию является none ( |
PlotFcn | Строит графики различных показателей прогресса во время выполнения алгоритма; выберите из предопределенных графиков или напишите свои собственные. Передайте имя, указатель на функцию или массив ячеек с именами или указатели на функцию. Для пользовательских функций построения графика передайте указатели на функцию. Значением по умолчанию является none (
Пользовательские функции построения графика используют тот же синтаксис, что и выходные функции. Смотрите Выходные функции для Optimization Toolbox™ и синтаксиса выходной функции и функции построения графика. Для |
RelLineSrchBnd | Относительная граница (действительное неотрицательное скалярное значение) в длине шага поиска линии такой, что общее перемещение в |
RelLineSrchBndDuration | Количество итераций, для которых граница задана в |
SpecifyObjectiveGradient | Градиент для целевой функции, заданный пользователем. См. предыдущее описание Для |
StepTolerance | Допуск завершения на Для |
TolConSQP | Допуск завершения внутренней итерации SQP нарушения ограничений, a положительной скалярной величины. Значение по умолчанию является |
TypicalX | Типичные |
Оптимизация стандартной программы fseminf
может варьировать рекомендуемый интервал дискретизации, S
, установить в seminfcon
во время расчета, потому что значения, отличные от рекомендуемого интервала, могут быть более подходящими для эффективности или робастности. Кроме того, wi конечной области, над которыми вычисляется Ki (x, wi), допускается изменяться во время оптимизации, при условии, что это не приводит к значительным изменениям числа локальных минимумов в Ki (x, wi).
Функция, которая будет минимизирована, ограничения и полубесконечные ограничения должны быть непрерывными функциями x
и w
. fseminf
может дать только локальные решения.
Когда задача невозможна, fseminf
пытается минимизировать максимальное значение ограничения.
fseminf
использует кубические и квадратичные методы интерполяции, чтобы оценить пиковые значения в полубесконечных ограничениях. Пиковые значения используются, чтобы сформировать набор ограничений, которые передаются в метод SQP, как в fmincon
функция. Когда количество ограничений изменяется, множители Лагранжа перераспределяются на новый набор ограничений.
Рекомендуемое вычисление интервала дискретизации использует различие между интерполированными пиковыми значениями и пиковыми значениями, появляющимися в наборе данных, чтобы оценить, должна ли функция принимать больше или меньше точек. Функция также оценивает эффективность интерполяции, экстраполируя кривую и сравнивая ее с другими точками кривой. Рекомендуемый интервал дискретизации уменьшается, когда пиковые значения близки к границам ограничений, т.е. нулю.
Для получения дополнительной информации об используемом алгоритме и типах процедур, отображаемых под Procedures
курс, когда Display
для опции задано значение 'iter'
с optimoptions
, см. также «Реализация SQP». Для получения дополнительной информации о fseminf
алгоритм, см. Fseminf Формулировка задачи и алгоритм.