Найдите минимум полубесконечно ограниченной многомерной нелинейной функции
Находит минимум проблемы заданным
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
является структурой, описанной во Входных параметрах.
Создайте структуру 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
:
| Целое число, идентифицирующее причину отключенный алгоритм. Следующие списки значения | |
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 | Уровень отображения (см. Итеративное Отображение):
|
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 | Строит различные меры прогресса, в то время как алгоритм выполняется; выберите из предопределенных графиков или запишите свое собственное. Передайте имя, указатель на функцию или массив ячеек имен или указателей на функцию. Для пользовательских функций построения графика передайте указатели на функцию. Значение по умолчанию не ни один (
Для получения информации о записи пользовательской функции построения графика смотрите Синтаксис Функции построения графика. Для |
RelLineSrchBnd | Родственник связал (действительное неотрицательное скалярное значение) на длине шага поиска строки, таким образом, что общее смещение в |
RelLineSrchBndDuration | Количество итераций, для которых связанное, заданное в |
SpecifyObjectiveGradient | Градиент для целевой функции задан пользователем. См. предыдущее описание Для |
StepTolerance | Допуск завершения на Для |
TolConSQP | Допуск завершения на внутренней итерации ограничительное нарушение SQP, положительная скалярная величина. Значением по умолчанию является |
TypicalX | Типичные значения |
fseminf
стандартной программы оптимизации может отличаться рекомендуемый интервал выборки, S
, установить в seminfcon
, во время вычисления, потому что значения кроме рекомендуемого интервала могут более подходить для эффективности или робастности. Кроме того, конечной области wi, по которому вычисляется Ki (x, wi), позволяют отличаться во время оптимизации, при условии, что это не приводит к существенным изменениям в количестве локальных минимумов в Ki (x, wi).
Этот пример минимизирует функцию
(x – 1) 2,
подвергните ограничениям
0 ≤ x ≤ 2
g (x, t) = (x – 1/2) – (t – 1/2) 2 ≤ 0 для всех 0 ≤ t ≤ 1.
Неограниченная целевая функция минимизирована в x = 1. Однако ограничение,
g (x, t) ≤ 0 для всех 0 ≤ t ≤ 1,
maxt g (x, t) = (x – 1/2).
maxt g (x, t) ≤ 0, когда x ≤ 1/2.
Решить эту проблему с помощью fseminf
:
Запишите целевую функцию как анонимную функцию:
objfun = @(x)(x-1)^2;
Запишите полубесконечную ограничительную функцию, которая включает нелинейные ограничения ([ ] в этом случае), начальный интервал выборки для t (от 0 до 1 на шагах 0,01 в этом случае), и полубесконечная ограничительная функция g (x, t):
function [c, ceq, K1, s] = seminfcon(x,s) % No finite nonlinear inequality and equality constraints c = []; ceq = []; % Sample set if isnan(s) % Initial sampling interval s = [0.01 0]; end t = 0:s(1):1; % Evaluate the semi-infinite constraint K1 = (x - 0.5) - (t - 0.5).^2;
Вызовите fseminf
с начальной точкой 0.2 и просмотрите результат:
x = fseminf(objfun,0.2,1,@seminfcon) Local minimum found that satisfies the constraints. Optimization completed because the objective function is non-decreasing in feasible directions, to within the default value of the function tolerance, and constraints are satisfied to within the default value of the constraint tolerance. Active inequalities (to within options.ConstraintTolerance = 1e-006): lower upper ineqlin ineqnonlin 1 x = 0.5000
Функция, которая будет минимизирована, ограничения и полубесконечные ограничения, должна быть непрерывными функциями x
и w
. fseminf
может только дать локальные решения.
Когда проблема не выполнима, fseminf
пытается минимизировать максимальное ограничительное значение.
fseminf
использует кубические и квадратичные методы интерполяции, чтобы оценить пиковые значения в полубесконечных ограничениях. Пиковые значения используются, чтобы сформировать набор ограничений, которые предоставляются методу SQP как в функции fmincon
. Когда количество ограничительных изменений, множители Лагранжа перераспределены к новому набору ограничений.
Рекомендуемое вычисление интервала выборки использует различие между интерполированными пиковыми значениями и пиковыми значениями, кажущимися в наборе данных оценить, должна ли функция взять больше или меньше точек. Функция также оценивает эффективность интерполяции путем экстраполирования кривой и сравнения его с другими точками в кривой. Рекомендуемый интервал выборки уменьшен, когда пиковые значения близко к ограничительным контурам, т.е. нулю.
Для получения дополнительной информации на используемом алгоритме и типы процедур, отображенных в соответствии с заголовком Procedures
, когда опция Display
будет установлена в 'iter'
с optimoptions
, см. также Реализацию SQP. Для получения дополнительной информации на алгоритме fseminf
, см. fseminf проблемную Формулировку и Алгоритм.