exponenta event banner

fseminf

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

Уравнение

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

minxf (x ) , так что {A⋅x≤b,Aeq⋅x=beq,lb≤x≤ub,c (x) ≤0,ceq (x) = 0, Ki ( x, wi) ≤0, 1≤i≤n.

b и beq - векторы, A и Aeq - матрицы, c (x), ceq (x) и Ki (x, wi) - функции, возвращающие векторы, а f (x) - функция, возвращающая скаляр. f (x), c (x) и ceq (x) могут быть нелинейными функциями. Векторы (или матрицы) Ki (x, wi) ≤ 0 являются непрерывными функциями как x, так и дополнительного набора переменных w1, w2,..., wn. Переменные w1, w2,..., wn являются векторами, максимум, длины 2.

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, по которой вычислить соответствующий набор значений.

Примечание

В разделе Передача дополнительных параметров (Passing Extra Parameters) объясняется, как передать дополнительные параметры целевой функции и, при необходимости, нелинейным функциям ограничения.

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 - структура, описанная в Input Arguments.

[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соответственно. Матрица из двух столбцов, S, содержит рекомендуемый интервал выборки для значений w1, w2, ..., wntheta, которые используются для оценки K1, K2, ..., Kntheta. iтретий ряд S содержит рекомендуемый интервал выборки для оценки Ki. Когда Ki является вектором, используется только S(i,1) (второй столбец может содержать все нули). Когда Ki является матрицей, S(i,2) используется для выборки строк в Ki, S(i,1) используется для интервала выборки столбцов Ki (см. «Двухмерная полусредняя зависимость»). На первой итерации 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

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

PlotFcn

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

  • 'optimplotx' строит график текущей точки.

  • 'optimplotfunccount' строит график подсчета функций.

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

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

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

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

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

Пользовательские функции печати используют тот же синтаксис, что и функции вывода. См. раздел Функции вывода для оптимизации Toolbox™ и Функция вывода и синтаксис функции печати.

Для optimset, имя: PlotFcns. См. раздел Имена текущих и устаревших опций.

RelLineSrchBnd

Относительная граница (действительное неотрицательное скалярное значение) на длине шага поиска строки, такая, что полное смещение в x удовлетворяет | Δx (i ) | ≤ relLineSrchBnd· max (| 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 (x , t )  ≤ 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, записать целевую функцию как анонимную функцию.

objfun = @(x)(x-1)^2;

Запишите полулегкую функцию ограничения seminfcon, которая включает в себя нелинейные ограничения ([] в данном случае), начальный интервал выборки для 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