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, options, 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 содержит рекомендуемый интервал выборки для оценки K i. Когда K, i является вектором, использование только S(i,1) (второй столбец может быть всеми нулями). Когда K, i является матрицей, S(i,2), используется для выборки строк в K i, S(i,1) используется для интервала выборки столбцов K i (см. Двумерное Ограничение Полу-Бога). На первой итерации S является NaN, так, чтобы некоторый начальный интервал выборки был определен 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

Уровень отображения (см. Итеративное Отображение):

  • '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' отображает ошибку, когда целевая функция или ограничения возвращают значение, которое является complex, Inf или 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' строит значение функции.

  • '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,

подвергните ограничениям

0 ≤ x ≤ 2
g (x, t) = (x – 1/2) – (t – 1/2) 2 ≤ 0 для всех 0 ≤ t ≤ 1.

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

g (xt) ≤ 0 для всех 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:

  1. Запишите целевую функцию как анонимную функцию:

    objfun = @(x)(x-1)^2;
  2. Запишите полубесконечную ограничительную функцию, которая включает нелинейные ограничения ([ ] в этом случае), начальный интервал выборки для t (от 0 до 1 на шагах 0,01 в этом случае), и полубесконечная ограничительная функция g (xt):

    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;
  3. Вызовите 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 проблемную Формулировку и Алгоритм.

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