Найдите минимум полубесконечно ограниченной многомерной нелинейной функции
Находит минимум проблемы заданным
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
Опции
, 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 | Строит различные показатели прогресса, в то время как алгоритм выполняется; выберите из предопределенных графиков или запишите свое собственное. Передайте имя, указатель на функцию или массив ячеек имен или указателей на функцию. Для пользовательских функций построения графика передайте указатели на функцию. Значение по умолчанию не ни один (
Для получения информации о записи пользовательской функции построения графика смотрите Синтаксис Функции построения графика. Для |
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 Формулировку задачи и Алгоритм.