fseminf

Найдите минимум полубесконечно ограниченной многомерной нелинейной функции

Уравнение

Находит минимум проблемы заданным

minxf(x) таким образом , что {Axb,Aeqx=beq,lbxub,c(x)0,ceq(x)=0,Ki(x,wi)0, 1in.

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:

fun

Функция, которая будет минимизирована. fun функция, которая принимает векторный x и возвращает скалярный f, целевая функция выполнена в x. Функциональный fun может быть определен функцией указатель для файла

x = fseminf(@myfun,x0,ntheta,seminfcon)

где myfun функция MATLAB® такой как

function f = myfun(x)
f = ...            % Compute function value at x

fun может также быть указатель на функцию для анонимной функции.

fun = @(x)sin(x''*x);

Если градиент fun может также быть вычислен и SpecifyObjectiveGradient опцией является true, как установлено

options = optimoptions('fseminf','SpecifyObjectiveGradient',true)

затем функциональный fun должен возвратиться, во втором выходном аргументе, значение градиента g, вектор, в x.

ntheta

Количество полубесконечных ограничений.

options

Опции предоставляют функционально-специализированную подробную информацию для options значения.

seminfcon

Функция, которая вычисляет вектор нелинейных ограничений неравенства, c, вектор нелинейных ограничений равенства, ceq, и ntheta полубесконечные ограничения (векторы или матрицы) K1, K2,..., Kntheta оцененный на интервале S в точке x. Функциональный seminfcon может быть определен функцией указатель.

x = fseminf(@myfun,x0,ntheta,@myinfcon)

где myinfcon функция MATLAB такой как

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

S рекомендуемый интервал выборки, который может или не может использоваться. Возврат для c и ceq если никакие такие ограничения не существуют.

Векторы или матрицы K1, K2, ..., Kntheta содержите полубесконечные ограничения, оцененные для произведенного множества значений для независимых переменных w1, w2, ..., wntheta, соответственно. Матрица 2D столбца, S, содержит рекомендуемый интервал выборки для значений w1, w2, ..., wntheta, которые используются, чтобы оценить K1, K2, ..., Kntheta. iстрока th S содержит рекомендуемый интервал выборки для оценки Ki. Когда Ki вектор, используйте только S(i,1) (второй столбец может быть всеми нулями). Когда Ki матрица, S(i,2) используется в выборке строк в Ki, S(i,1) используется в интервале выборки столбцов Ki (см. Двумерное Ограничение Полу-Бога). На первой итерации S isnan, так, чтобы некоторый начальный интервал выборки был определен seminfcon.

Примечание

Поскольку функции Optimization Toolbox™ только принимают входные параметры типа double, предоставленные пользователями объективные и нелинейные ограничительные функции должны возвратить выходные параметры типа double.

Передача Дополнительных Параметров объясняет, как параметризовать seminfcon, при необходимости. Пример Создания Точек Выборки содержит пример и одного - и двумерных точек выборки.

problem

objective

Целевая функция

x0

Начальная точка для x
nthetaКоличество полубесконечных ограничений
seminfconПолубесконечная ограничительная функция

Aineq

Матрица для линейных ограничений неравенства

bineq

Вектор для линейных ограничений неравенства

Aeq

Матрица для линейных ограничений равенства

beq

Вектор для линейных ограничений равенства
lbВектор нижних границ
ubВектор верхних границ

solver

'fseminf'

options

Опции создаются с optimoptions

Выходные аргументы

Входные аргументы функции содержат общие описания аргументов, возвращенных fseminf. Этот раздел предоставляет функционально-специализированную подробную информацию для exitflag\lambda, и output:

exitflag

Целое число, идентифицирующее причину завершения алгоритма. Следующие списки значения exitflag и соответствующие причины завершения алгоритма.

1

Функция сходилась к решению x.

4

Величина поискового направления была меньше заданного допуска, и нарушение ограничений было меньше options.ConstraintTolerance.

5

Величина косой производной была меньше заданного допуска, и нарушение ограничений было меньше options.ConstraintTolerance.

0

Количество итераций превысило options.MaxIterations или количество вычислений функции превысило options.MaxFunctionEvaluations.

-1

Алгоритм был отключен выходной функцией.

-2

Никакая допустимая точка не была найдена.

lambda

Структура, содержащая множители Лагранжа в решении x (разделенный типом ограничения). Поля структуры

lower

Нижние границы lb

upper

Верхние границы ub

ineqlin

Линейные неравенства

eqlin

Линейные равенства

ineqnonlin

Нелинейные неравенства

eqnonlin

Нелинейные равенства

output

Структура, содержащая информацию об оптимизации. Поля структуры

iterations

Количество проделанных итераций

funcCount

Количество вычислений функции

lssteplength

Размер линии ищет шаг относительно поискового направления

stepsize

Итоговое смещение в x

algorithm

Алгоритм оптимизации используется

constrviolation

Максимум ограничительных функций

firstorderopt

Мера оптимальности первого порядка

message

Выходное сообщение

Опции

Опции оптимизации используются fseminf. Используйте optimoptions установить или изменить options. Дополнительную информацию см. в Ссылке Опций Оптимизации.

Некоторые опции отсутствуют в optimoptions отображение. Эти опции появляются курсивом в следующей таблице. Для получения дополнительной информации, Опции вида на море.

CheckGradients

Сравните предоставленные пользователями производные (градиенты цели или ограничений) к производным конечного дифференцирования. Выбором является true или false по умолчанию.

Для optimset, именем является DerivativeCheck и значениями является 'on' или 'off'. См. текущие и устаревшие таблицы имени опции.

ConstraintTolerance

Допуск завершения на нарушении ограничений, положительной скалярной величине. Значением по умолчанию является 1e-6. Смотрите допуски и критерий остановки.

Для optimset, именем является TolCon. См. текущие и устаревшие таблицы имени опции.

Диагностика

Отобразите диагностическую информацию о функции, которая будет минимизирована или решена. Выбором является 'on' или 'off' по умолчанию.

DiffMaxChange

Максимальное изменение в переменных для градиентов конечной разности (положительная скалярная величина). Значением по умолчанию является Inf.

DiffMinChange

Минимальное изменение в переменных для градиентов конечной разности (положительная скалярная величина). Значением по умолчанию является 0.

Display

Level of display (см. Итеративное Отображение):

  • 'off' или 'none' не отображает вывода.

  • 'iter' отображает вывод в каждой итерации и дает выходное сообщение по умолчанию.

  • 'iter-detailed' отображает вывод в каждой итерации и дает техническое выходное сообщение.

  • 'notify' отображает вывод, только если функция не сходится и дает выходное сообщение по умолчанию.

  • 'notify-detailed' отображает вывод, только если функция не сходится и дает техническое выходное сообщение.

  • 'final' (значение по умолчанию) отображает только окончательный вывод и дает выходное сообщение по умолчанию.

  • 'final-detailed' отображения только окончательный результат, и дают техническое выходное сообщение.

FiniteDifferenceStepSize

Скалярный или векторный фактор размера шага для конечных разностей. Когда вы устанавливаете FiniteDifferenceStepSize к векторному v, прямые конечные разности delta

delta = v.*sign′(x).*max(abs(x),TypicalX);

где sign′(x) = sign(x) кроме sign′(0) = 1. Центральные конечные разности

delta = v.*max(abs(x),TypicalX);

Скалярный FiniteDifferenceStepSize расширяется до вектора. Значением по умолчанию является sqrt(eps) для прямых конечных разностей и eps^(1/3) для центральных конечных разностей.

Для optimset, именем является FinDiffRelStep. См. текущие и устаревшие таблицы имени опции.

FiniteDifferenceType

Конечными разностями, используемыми, чтобы оценить градиенты, является любой 'forward' (значение по умолчанию), или 'central' (в центре). 'central' берет вдвое больше вычислений функции, но должен быть более точным.

Алгоритм старается выполнить границы при оценке обоих типов конечных разностей. Так, например, это могло взять обратное, а не форвард, различие, чтобы не оценивать в точке вне границ.

Для optimset, именем является FinDiffType. См. текущие и устаревшие таблицы имени опции.

FunctionTolerance

Допуск завершения на значении функции, положительной скалярной величине. Значением по умолчанию является 1e-4. Смотрите допуски и критерий остановки.

Для optimset, именем является TolFun. См. текущие и устаревшие таблицы имени опции.

FunValCheck

Проверяйте, допустимы ли целевая функция и ограничительные значения. 'on' отображает ошибку, когда целевая функция или ограничения возвращают значение, которое является complexInf, или NaN. 'off' по умолчанию отображения никакая ошибка.

MaxFunctionEvaluations

Максимальное количество позволенных вычислений функции, положительное целое число. Значением по умолчанию является 100*numberOfVariables. Смотрите допуски и критерий остановки и итерации и функциональные количества.

Для optimset, именем является MaxFunEvals. См. текущие и устаревшие таблицы имени опции.

MaxIterations

Максимальное количество позволенных итераций, положительное целое число. Значением по умолчанию является 400. Смотрите допуски и критерий остановки и итерации и функциональные количества.

Для optimset, именем является MaxIter. См. текущие и устаревшие таблицы имени опции.

MaxSQPIter

Максимальное количество позволенных итераций SQP, положительное целое число. Значением по умолчанию является 10*max(numberOfVariables, numberOfInequalities + numberOfBounds).

OptimalityTolerance

Допуск завершения на оптимальности первого порядка (положительная скалярная величина). Значением по умолчанию является 1e-6. Смотрите меру оптимальности первого порядка.

Для optimset, именем является TolFun. См. текущие и устаревшие таблицы имени опции.

OutputFcn

Задайте одну или несколько пользовательских функций, которые вызывает на каждой итерации оптимизационная функция. Передайте указатель на функцию или cell-массив указателей на функцию. Значение по умолчанию не ни один ([]). Смотрите синтаксис выходной функции.

PlotFcn

Строит различные показатели прогресса, в то время как алгоритм выполняется; выберите из предопределенных графиков или запишите свое собственное. Передайте имя, указатель на функцию или массив ячеек имен или указателей на функцию. Для пользовательских функций построения графика передайте указатели на функцию. Значение по умолчанию не ни один ([]):

  • 'optimplotx' строит текущую точку.

  • 'optimplotfunccount' строит функциональное количество.

  • 'optimplotfval' строит значение функции.

  • 'optimplotfvalconstr' строит лучшее выполнимое значение целевой функции, найденное как линейный график. График показывает неосуществимые точки как красные, и допустимые точки как синие, с помощью допуска выполнимости 1e-6.

  • 'optimplotconstrviolation' строит максимальное нарушение ограничений.

  • 'optimplotstepsize' строит размер шага.

  • 'optimplotfirstorderopt' строит меру оптимальности первого порядка.

Пользовательские функции построения графика используют тот же синтаксис в качестве выходных функций. Смотрите Синтаксис Выходной функции и Выходные функции.

Для optimset, именем является PlotFcns. См. текущие и устаревшие таблицы имени опции.

RelLineSrchBnd

Относительная граница (действительное неотрицательное скалярное значение) на линии ищет длину шага, таким образом что общее смещение в x удовлетворяет | Δx (i) |  ≤ relLineSrchBnd · макс. (|x (i) |, |typicalx (i) |). Эта опция обеспечивает управление величиной смещений в x для случаев, в которых решатель предпринимает шаги тот fseminf считает слишком большим. Значением по умолчанию не являются никакие границы ([]).

RelLineSrchBndDuration

Количество итераций, для который связанное, заданное в RelLineSrchBnd должно быть активным (значением по умолчанию является 1)

SpecifyObjectiveGradient

Градиент для целевой функции задан пользователем. См. предыдущее описание fun чтобы видеть, как задать градиент в fun. Установите на true иметь fseminf используйте пользовательский градиент целевой функции. false по умолчанию причины fseminf оценить градиенты с помощью конечных разностей.

Для optimset, именем является GradObj и значениями является 'on' или 'off'. См. текущие и устаревшие таблицы имени опции.

StepTolerance

Допуск завершения на x, положительная скалярная величина. Значением по умолчанию является 1e-4. Смотрите допуски и критерий остановки.

Для optimset, именем является TolX. См. текущие и устаревшие таблицы имени опции.

TolConSQP

Допуск завершения на внутренней итерации нарушение ограничений SQP, положительная скалярная величина. Значением по умолчанию является 1e-6.

TypicalX

Типичный x значения. Число элементов в TypicalX равно числу элементов в x0, начальная точка. Значением по умолчанию является ones(numberofvariables,1). fseminf использование TypicalX для масштабирования конечных разностей для оценки градиента.

Примечания

Стандартная программа оптимизации fseminf может варьироваться рекомендуемый интервал выборки, S, установите в seminfcon, во время расчета, потому что значения кроме рекомендуемого интервала могут более подходить для КПД или робастности. Кроме того, конечной области wi, по которому вычисляется Ki (x, wi), позволяют варьироваться во время оптимизации, при условии, что это не приводит к существенным изменениям в количестве локальных минимумов в Ki (x, wi).

Примеры

свернуть все

Этот пример минимизирует функцию

(x-1)2,

удовлетворяющее ограничениям

0x2

g(x,t)=(x-1/2)-(t-1/2)20 \forall 0t1.

Неограниченная целевая функция минимизирована в x = 1. Однако ограничение,

g(x, t)  0 \forall 0  t  1

подразумевает x  1/2. Вы видите это, замечая это (t  1/2)2  0, так

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). Функция появляется как seminfcon в конце этого раздела.

Установите начальную точку x0 = 0.2.

x0 = 0.2;

Существует одно полубесконечное ограничение.

ntheta = 1;

Решите задачу путем вызова fseminf и просмотрите результат.

x = fseminf(objfun,x0,ntheta,@seminfcon)
Local minimum found that satisfies the constraints.

Optimization completed because the objective function is non-decreasing in 
feasible directions, to within the value of the optimality tolerance,
and constraints are satisfied to within the  value of the constraint tolerance.
x = 0.5000

Следующий код создает seminfcon функция.

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;
end

Ограничения

Функция, которая будет минимизирована, ограничения и полубесконечные ограничения, должна быть непрерывными функциями x и w. fseminf может только дать локальные решения.

Когда проблема не выполнима, fseminf попытки минимизировать максимальное ограничительное значение.

Алгоритмы

fseminf использует кубические и квадратичные методы интерполяции, чтобы оценить пиковые значения в полубесконечных ограничениях. Пиковые значения используются, чтобы сформировать набор ограничений, которые предоставляются методу SQP как в fmincon функция. Когда количество ограничительных изменений, множители Лагранжа перераспределены к новому набору ограничений.

Рекомендуемое вычисление интервала выборки использует различие между интерполированными пиковыми значениями и пиковыми значениями, кажущимися в наборе данных оценить, должна ли функция взять больше или меньше точек. Функция также оценивает эффективность интерполяции путем экстраполирования кривой и сравнения его с другими точками в кривой. Рекомендуемый интервал выборки уменьшен, когда пиковые значения близко к границам ограничений, т.е. нулю.

Для получения дополнительной информации об используемом алгоритме и типы процедур, отображенных под Procedures заголовок, когда Display опция установлена в 'iter' с optimoptions, см. также Реализацию SQP. Для получения дополнительной информации о fseminf алгоритм, см. fseminf Формулировку задачи и Алгоритм.

Представлено до R2006a

Для просмотра документации необходимо авторизоваться на сайте