Найдите минимум полубесконечно ограниченной многомерной нелинейной функции
Находит минимум целевой функции
b и beq являются векторами, A и Aeq являются матрицами, c (x), ceq (x), и Ki (x,wi) является функциями, которые возвращают векторы, и f (x) является функцией, которая возвращает скаляр. 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 (x), таким образом, ограничения содержат для всех возможных значений wi ℜ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
Опции
, 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
:
| Целое число, идентифицирующее причину завершения алгоритма. Следующие списки значения | |
1 | Функция сходилась к решению | |
4 | Величина поискового направления была меньше заданного допуска, и нарушение ограничений было меньше | |
5 | Величина косой производной была меньше заданного допуска, и нарушение ограничений было меньше | |
0 | Количество итераций превысило | |
-1 | Алгоритм был отключен выходной функцией. | |
-2 | Никакая допустимая точка не была найдена. | |
| Структура, содержащая множители Лагранжа в решении | |
lower | Нижние границы | |
upper | Верхние границы | |
ineqlin | Линейные неравенства | |
eqlin | Линейные равенства | |
ineqnonlin | Нелинейные неравенства | |
eqnonlin | Нелинейные равенства | |
| Структура, содержащая информацию об оптимизации. Поля структуры | |
iterations | Количество проделанных итераций | |
funcCount | Количество вычислений функции | |
lssteplength | Размер линии ищет шаг относительно поискового направления | |
stepsize | Итоговое смещение в | |
algorithm | Алгоритм оптимизации используется | |
constrviolation | Максимум ограничительных функций | |
firstorderopt | Мера оптимальности первого порядка | |
message | Выходное сообщение |
Опции оптимизации, используемые fseminf
Использование optimoptions
установить или изменить options
. Дополнительную информацию см. в Ссылке Опций Оптимизации.
Некоторые опции отсутствуют в optimoptions
отображение. Эти опции появляются курсивом в следующей таблице. Для получения дополнительной информации, Опции вида на море.
| Сравните предоставленные пользователями производные (градиенты цели или ограничений) к производным конечного дифференцирования. Выбором является Для |
ConstraintTolerance | Допуск завершения на нарушении ограничений, положительной скалярной величине. Значением по умолчанию является Для |
Диагностика | Отобразите диагностическую информацию о функции, которая будет минимизирована или решена. Выбором является |
DiffMaxChange | Максимальное изменение в переменных для градиентов конечной разности (положительная скалярная величина). Значением по умолчанию является |
DiffMinChange | Минимальное изменение в переменных для градиентов конечной разности (положительная скалярная величина). |
Display | Level of display (см. Итеративное Отображение):
|
FiniteDifferenceStepSize |
Скалярный или векторный фактор размера шага для конечных разностей. Когда вы устанавливаете
sign′(x) = sign(x) кроме sign′(0) = 1 . Центральные конечные разности
FiniteDifferenceStepSize расширяется до вектора. Значением по умолчанию является sqrt(eps) для прямых конечных разностей и eps^(1/3) для центральных конечных разностей.
Для |
FiniteDifferenceType | Конечными разностями, используемыми, чтобы оценить градиенты, является любой Алгоритм старается выполнить границы при оценке обоих типов конечных разностей. Так, например, это могло взять обратное, а не форвард, различие, чтобы не оценивать в точке вне границ. Для |
FunctionTolerance | Допуск завершения на значении функции, положительной скалярной величине. Значением по умолчанию является Для |
FunValCheck | Проверяйте, допустимы ли целевая функция и ограничительные значения. |
MaxFunctionEvaluations | Максимальное количество позволенных вычислений функции, положительное целое число. Значением по умолчанию является Для |
MaxIterations | Максимальное количество позволенных итераций, положительное целое число. Значением по умолчанию является Для |
MaxSQPIter | Максимальное количество позволенных итераций SQP, положительное целое число. Значением по умолчанию является |
OptimalityTolerance |
Допуск завершения на оптимальности первого порядка (положительная скалярная величина). Значением по умолчанию является Для |
OutputFcn | Задайте одну или несколько пользовательских функций, которые вызывает на каждой итерации оптимизационная функция. Передайте указатель на функцию или cell-массив указателей на функцию. Значение по умолчанию не ни один ( |
PlotFcn | Строит различные показатели прогресса, в то время как алгоритм выполняется; выберите из предопределенных графиков или запишите свое собственное. Передайте имя, указатель на функцию или массив ячеек имен или указателей на функцию. Для пользовательских функций построения графика передайте указатели на функцию. Значение по умолчанию не ни один (
Пользовательские функции построения графика используют тот же синтаксис в качестве выходных функций. Смотрите Выходные функции для Optimization Toolbox™ и Синтаксис Функции построения графика и Выходную функцию. Для |
RelLineSrchBnd | Относительная граница (действительное неотрицательное скалярное значение) на линии ищет длину шага, таким образом что общее смещение в |
RelLineSrchBndDuration | Количество итераций, для который связанное, заданное в |
SpecifyObjectiveGradient | Градиент для целевой функции задан пользователем. См. предыдущее описание Для |
StepTolerance | Допуск завершения на Для |
TolConSQP | Допуск завершения на внутренней итерации нарушение ограничений SQP, положительная скалярная величина. Значением по умолчанию является |
TypicalX | Типичный |
Стандартная программа оптимизации fseminf
может варьироваться рекомендуемый интервал выборки, S
, установите в seminfcon
, во время расчета, потому что значения кроме рекомендуемого интервала могут более подходить для КПД или робастности. Кроме того, конечной области wi, по которому вычисляется Ki (x, wi), позволяют варьироваться во время оптимизации, при условии, что это не приводит к существенным изменениям в количестве локальных минимумов в Ki (x, wi).
Функция, которая будет минимизирована, ограничения и полубесконечные ограничения, должна быть непрерывными функциями x
и w
. fseminf
может только дать локальные решения.
Когда проблема не выполнима, fseminf
попытки минимизировать максимальное ограничительное значение.
fseminf
использует кубические и квадратичные методы интерполяции, чтобы оценить пиковые значения в полубесконечных ограничениях. Пиковые значения используются, чтобы сформировать набор ограничений, которые предоставляются методу SQP как в fmincon
функция. Когда количество ограничительных изменений, множители Лагранжа перераспределены к новому набору ограничений.
Рекомендуемое вычисление интервала выборки использует различие между интерполированными пиковыми значениями и пиковыми значениями, кажущимися в наборе данных оценить, должна ли функция взять больше или меньше точек. Функция также оценивает эффективность интерполяции путем экстраполирования кривой и сравнения его с другими точками в кривой. Рекомендуемый интервал выборки уменьшен, когда пиковые значения близко к границам ограничений, i.e., нуль.
Для получения дополнительной информации об используемом алгоритме и типы процедур, отображенных под Procedures
заголовок, когда Display
опция установлена в 'iter'
с optimoptions
, см. также Реализацию SQP. Для получения дополнительной информации о fseminf
алгоритм, см. fseminf Формулировку задачи и Алгоритм.