exponenta event banner

paretosearch

Поиск точек в наборе Парето

Описание

пример

x = paretosearch(fun,nvars) находит недоминированные точки мультиобъективной функции fun. nvars аргумент - это измерение задачи оптимизации (количество переменных принятия решения).

пример

x = paretosearch(fun,nvars,A,b) находит недоминированные точки, подверженные линейным неравенствам A*x ≤ b. См. раздел Ограничения линейного неравенства.

x = paretosearch(fun,nvars,A,b,Aeq,beq) находит недоминированные точки, подверженные линейным ограничениям Aeq*x = beq и A*x ≤ b. Если линейных неравенств не существует, установите A = [] и b = [].

пример

x = paretosearch(fun,nvars,A,b,Aeq,beq,lb,ub) определяет набор нижних и верхних границ для конструктивных переменных в x, так что x всегда находится в диапазоне lb  x  ub. Если линейных уравнений не существует, установите Aeq = [] и beq = []. Если x(i) не имеет нижней границы, набор lb(i) = -Inf. Если x(i) не имеет верхней границы, набор ub(i) = Inf.

пример

x = paretosearch(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon) применяет нелинейные неравенства c(x) определено в nonlcon. paretosearch функция находит недоминированные точки, такие, что c(x) ≤ 0. Если границ не существует, установите lb = [], ub = []или и то и другое.

Примечание

В настоящее время, paretosearch не поддерживает нелинейные ограничения равенства ceq(x) = 0.

пример

x = paretosearch(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,options) находит недоминированные точки с опциями оптимизации, указанными в options. Использовать optimoptions для установки этих параметров. Если нет нелинейных ограничений неравенства или равенства, установите nonlcon = [].

x = paretosearch(problem) находит недоминированные точки для problem, где problem - структура, описанная в problem.

пример

[x,fval] = paretosearch(___), для любых входных переменных возвращает матрицу fval, значение всех функций фитнеса в fun для всех решений (строк) в x. Продукция fval имеет nf столбцы, где nf - количество целей и имеет то же количество строк, что и x.

пример

[x,fval,exitflag,output] = paretosearch(___) также возвращает exitflag, целое число, определяющее причину остановки алгоритма, и output, структура, содержащая информацию о процессе решения.

пример

[x,fval,exitflag,output,residuals] = paretosearch(___) также возвращает residuals, структура, содержащая значения ограничений в точках решения x.

Примеры

свернуть все

Найдите точки на фронте Парето двухобъектной функции двумерной переменной.

fun = @(x)[norm(x-[1,2])^2;norm(x+[2,1])^2];
rng default % For reproducibility
x = paretosearch(fun,2);
Pareto set found that satisfies the constraints. 

Optimization completed because the relative change in the volume of the Pareto set 
is less than 'options.ParetoSetChangeTolerance' and constraints are satisfied to within 
'options.ConstraintTolerance'.

Постройте график решения как график рассеяния.

plot(x(:,1),x(:,2),'m*')
xlabel('x(1)')
ylabel('x(2)')

Figure contains an axes. The axes contains an object of type line.

Теоретически решением этой задачи является прямая линия от [-2,-1] кому [1,2]. paretosearch возвращает равномерно разнесенные точки вблизи этой линии.

Создание фронта Парето для задачи с двумя целями в двух измерениях с учетом линейной зависимости x(1) + x(2) <= 1.

fun = @(x)[norm(x-[1,2])^2;norm(x+[2,1])^2];
A = [1,1];
b = 1;
rng default % For reproducibility
x = paretosearch(fun,2,A,b);
Pareto set found that satisfies the constraints. 

Optimization completed because the relative change in the volume of the Pareto set 
is less than 'options.ParetoSetChangeTolerance' and constraints are satisfied to within 
'options.ConstraintTolerance'.

Постройте график решения как график рассеяния.

plot(x(:,1),x(:,2),'m*')
xlabel('x(1)')
ylabel('x(2)')

Figure contains an axes. The axes contains an object of type line.

Теоретически решением этой задачи является прямая линия от [-2,-1] кому [0,1]. paretosearch возвращает равномерно разнесенные точки вблизи этой линии.

Создание фронта Парето для задачи с двумя целями в двух измерениях, зависящих от границ x(1) >= 0 и x(2) <= 1.

fun = @(x)[norm(x-[1,2])^2;norm(x+[2,1])^2];
lb = [0,-Inf]; % x(1) >= 0
ub = [Inf,1]; % x(2) <= 1
rng default % For reproducibility
x = paretosearch(fun,2,[],[],[],[],lb,ub);
Pareto set found that satisfies the constraints. 

Optimization completed because the relative change in the volume of the Pareto set 
is less than 'options.ParetoSetChangeTolerance' and constraints are satisfied to within 
'options.ConstraintTolerance'.

Постройте график решения как график рассеяния.

plot(x(:,1),x(:,2),'m*')
xlabel('x(1)')
ylabel('x(2)')

Figure contains an axes. The axes contains an object of type line.

Все точки решения находятся на границах ограничения x(1) = 0 или x(2) = 1.

Создание фронта Парето для задачи с двумя целями в двух измерениях, зависящих от границ -1.1 <= x(i) <= 1.1 и нелинейное ограничение norm(x)^2 <= 1.2. Функция нелинейных ограничений появляется в конце этого примера и работает, если этот пример выполняется в реальном времени. Чтобы выполнить этот пример в противном случае, включите функцию нелинейных ограничений в качестве файла на пути MATLAB ®.

Чтобы лучше видеть эффект нелинейного ограничения, задайте параметры, чтобы использовать большой размер набора Парето.

rng default % For reproducibility
fun = @(x)[norm(x-[1,2])^2;norm(x+[2,1])^2];
lb = [-1.1,-1.1];
ub = [1.1,1.1];
options = optimoptions('paretosearch','ParetoSetSize',200);
x = paretosearch(fun,2,[],[],[],[],lb,ub,@circlecons,options);
Pareto set found that satisfies the constraints. 

Optimization completed because the relative change in the volume of the Pareto set 
is less than 'options.ParetoSetChangeTolerance' and constraints are satisfied to within 
'options.ConstraintTolerance'.

Постройте график решения как график рассеяния. Включите график круговой границы зависимости.

figure
plot(x(:,1),x(:,2),'k*')
xlabel('x(1)')
ylabel('x(2)')
hold on
rectangle('Position',[-1.2 -1.2 2.4 2.4],'Curvature',1,'EdgeColor','r')
xlim([-1.2,0.5])
ylim([-0.5,1.2])
axis square
hold off

Figure contains an axes. The axes contains 2 objects of type line, rectangle.

Точки решения, которые имеют положительные x(1) значения или отрицательные x(2) значения близки к границе нелинейной зависимости.

function [c,ceq] = circlecons(x)
ceq = [];
c = norm(x)^2 - 1.2;
end

Контроль хода выполнения paretosearch, укажите 'psplotparetof' функция графика.

fun = @(x)[norm(x-[1,2])^2;norm(x+[2,1])^2];
options = optimoptions('paretosearch','PlotFcn','psplotparetof');
lb = [-4,-4];
ub = -lb;
x = paretosearch(fun,2,[],[],[],[],lb,ub,[],options);
Pareto set found that satisfies the constraints. 

Optimization completed because the relative change in the volume of the Pareto set 
is less than 'options.ParetoSetChangeTolerance' and constraints are satisfied to within 
'options.ConstraintTolerance'.

Figure paretosearch contains an axes. The axes with title Pareto Front contains an object of type line.

Решение выглядит как четвертькруглая дуга с радиусом 18, которая может быть показана как аналитическое решение.

Получение передней панели Pareto как в пространстве функций, так и в пространстве параметров путем вызова paretosearch с обоими x и fval выходы. Задайте параметры для печати набора Парето как в пространстве функций, так и в пространстве параметров.

fun = @(x)[norm(x-[1,2])^2;norm(x+[2,1])^2];
lb = [-4,-4];
ub = -lb;
options = optimoptions('paretosearch','PlotFcn',{'psplotparetof' 'psplotparetox'});
rng default % For reproducibility
[x,fval] = paretosearch(fun,2,[],[],[],[],lb,ub,[],options);
Pareto set found that satisfies the constraints. 

Optimization completed because the relative change in the volume of the Pareto set 
is less than 'options.ParetoSetChangeTolerance' and constraints are satisfied to within 
'options.ConstraintTolerance'.

Figure paretosearch contains 2 axes. Axes 1 with title Pareto Front contains an object of type line. Axes 2 with title Parameter Space contains an object of type line.

Аналитическим решением в пространстве целевой функции является четвертькруглая дуга радиуса 18. В пространстве параметров аналитическое решение представляет собой прямую линию из [-2,-1] кому [1,2]. Точки решения близки к аналитическим кривым.

Задайте параметры для мониторинга процесса решения набора Pareto. Кроме того, получите больше выходных данных от paretosearch для понимания процесса решения.

options = optimoptions('paretosearch','Display','iter',...
    'PlotFcn',{'psplotparetof' 'psplotparetox'});
fun = @(x)[norm(x-[1,2])^2;norm(x+[2,1])^2];
lb = [-4,-4];
ub = -lb;
rng default % For reproducibility
[x,fval,exitflag,output] = paretosearch(fun,2,[],[],[],[],lb,ub,[],options);
Iter   F-count   NumSolutions  Spread       Volume 
   0        60        11          -         3.7872e+02
   1       386        12          -         3.4654e+02
   2       702        27       9.4324e-01   2.9452e+02
   3      1029        27          -         2.9904e+02
   4      1357        40       0.0000e+00   3.0154e+02
   5      1697        60       1.4903e-01   3.0369e+02
   6      1841        60       1.4515e-01   3.0439e+02
   7      1961        60       1.7716e-01   3.0465e+02
   8      2075        60       1.6123e-01   3.0475e+02
   9      2189        60       1.7419e-01   3.0449e+02

Pareto set found that satisfies the constraints. 

Optimization completed because the relative change in the volume of the Pareto set 
is less than 'options.ParetoSetChangeTolerance' and constraints are satisfied to within 
'options.ConstraintTolerance'.

Figure paretosearch contains 2 axes. Axes 1 with title Pareto Front contains an object of type line. Axes 2 with title Parameter Space contains an object of type line.

Проверьте дополнительные выходы.

fprintf('Exit flag %d.\n',exitflag)
Exit flag 1.
disp(output)
         iterations: 10
          funccount: 2189
             volume: 304.4256
    averagedistance: 0.0215
             spread: 0.1742
      maxconstraint: 0
            message: 'Pareto set found that satisfies the constraints. ...'
           rngstate: [1x1 struct]

Получите и изучите остатки зависимостей фронта Парето. Создание проблемы с линейным ограничением неравенства sum(x) <= -1/2 и ограничение нелинейного неравенства norm(x)^2 <= 1.2. Для повышения точности используйте 200 точек на передней панели Pareto и ParetoSetChangeTolerance из 1e-7, и дать естественные границы -1.2 <= x(i) <= 1.2.

Функция нелинейных ограничений появляется в конце этого примера и работает, если этот пример выполняется в реальном времени. Чтобы выполнить этот пример в противном случае, включите функцию нелинейных ограничений в качестве файла на пути MATLAB ®.

fun = @(x)[norm(x-[1,2])^2;norm(x+[2,1])^2];
A = [1,1];
b = -1/2;
lb = [-1.2,-1.2];
ub = -lb;
nonlcon = @circlecons;
rng default % For reproducibility
options = optimoptions('paretosearch','ParetoSetChangeTolerance',1e-7,...
    'PlotFcn',{'psplotparetof' 'psplotparetox'},'ParetoSetSize',200);

Звонить paretosearch с использованием всех выходов.

[x,fval,exitflag,output,residuals] = paretosearch(fun,2,A,b,[],[],lb,ub,nonlcon,options);
Pareto set found that satisfies the constraints. 

Optimization completed because the relative change in the volume of the Pareto set 
is less than 'options.ParetoSetChangeTolerance' and constraints are satisfied to within 
'options.ConstraintTolerance'.

Figure paretosearch contains 2 axes. Axes 1 with title Pareto Front contains an object of type line. Axes 2 with title Parameter Space contains an object of type line.

Ограничения неравенства уменьшают размер набора Парето по сравнению с неограниченным набором. Проверьте возвращенные остатки.

fprintf('The maximum linear inequality constraint residual is %f.\n',max(residuals.ineqlin))
The maximum linear inequality constraint residual is 0.000000.
fprintf('The maximum nonlinear inequality constraint residual is %f.\n',max(residuals.ineqnonlin))
The maximum nonlinear inequality constraint residual is -0.002619.

Максимальные возвращаемые остатки являются отрицательными, что означает, что все возвращаемые точки осуществимы. Максимальные возвращаемые остатки близки к нулю, что означает, что каждое ограничение активно для некоторых точек.

function [c,ceq] = circlecons(x)
ceq = [];
c = norm(x)^2 - 1.2;
end

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

свернуть все

Оптимизируемые функции пригодности, указанные как дескриптор функции или имя функции.

fun является функцией, которая принимает действительный вектор строки из двойников x длины nvars и возвращает действительный вектор F(x) значений целевой функции. Для получения подробной информации о написании fun, см. раздел Вычислить целевые функции.

Если установить UseVectorized опция для true, то fun принимает матрицу размера nоколо-nvars, где матрица представляет n отдельных лиц. fun возвращает матрицу размера nоколо-m, где m - количество объективных функций. См. раздел Векторизация фитнес-функции.

Пример: @(x)[sin(x),cos(x)]

Типы данных: char | function_handle | string

Число переменных, указанное как положительное целое число. Решатель пропускает векторы строк длины nvars кому fun.

Пример: 4

Типы данных: double

Линейные ограничения неравенства, заданные как вещественная матрица. A является Mоколо-nvars матрица, где M - число неравенств.

A кодирует M линейные неравенства

A*x <= b,

где x - вектор столбца nvars переменные x(:), и b - вектор столбца с M элементы.

Например, для указания

x1 + 2x2 ≤ 10
3x1 + 4x2 ≤ 20
5x1 + 6x2 ≤ 30,

дать следующие ограничения:

A = [1,2;3,4;5,6];
b = [10;20;30];

Пример: Чтобы указать, что управляющие переменные суммируются до 1 или менее, задайте ограничения A = ones(1,N) и b = 1.

Типы данных: double

Линейные ограничения неравенства, заданные как действительный вектор. b является M-элементный вектор, связанный с A матрица. Если вы проходите b как вектор строки, решатели внутренне преобразуют b к вектору столбца b(:).

b кодирует M линейные неравенства

A*x <= b,

где x - вектор столбца N переменные x(:), и A является матрицей размера Mоколо-N.

Например, для указания

x1 + 2x2 ≤ 10
3x1 + 4x2 ≤ 20
5x1 + 6x2 ≤ 30,

дать следующие ограничения:

A = [1,2;3,4;5,6];
b = [10;20;30];

Пример: Чтобы указать, что управляющие переменные суммируются до 1 или менее, задайте ограничения A = ones(1,N) и b = 1.

Типы данных: double

Линейные ограничения равенства, заданные как вещественная матрица. Aeq является Meоколо-nvars матрица, где Me - количество уравнений.

Aeq кодирует Me линейные равенства

Aeq*x = beq,

где x - вектор столбца N переменные x(:), и beq - вектор столбца с Me элементы.

Например, для указания

x1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x3 = 20,

дать следующие ограничения:

Aeq = [1,2,3;2,4,1];
beq = [10;20];

Пример: Чтобы указать, что управляющие переменные суммируются до 1, задайте ограничения Aeq = ones(1,N) и beq = 1.

Типы данных: double

Линейные ограничения равенства, заданные как действительный вектор. beq является Me-элементный вектор, связанный с Aeq матрица. Если вы проходите beq как вектор строки, решатели внутренне преобразуют beq к вектору столбца beq(:).

beq кодирует Me линейные равенства

Aeq*x = beq,

где x - вектор столбца N переменные x(:), и Aeq является матрицей размера Meqоколо-N.

Например, для указания

x1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x3 = 20,

дать следующие ограничения:

Aeq = [1,2,3;2,4,1];
beq = [10;20];

Пример: Чтобы указать, что управляющие переменные суммируются до 1, задайте ограничения Aeq = ones(1,N) и beq = 1.

Типы данных: double

Нижние границы, определяемые как действительный вектор или массив двойников. lb представляет нижние границы по элементам в lb  x  ub.

Внутри, paretosearch преобразует массив lb к вектору lb(:).

Пример: lb = [0;-Inf;4] средства x(1) ≥ 0, x(3) ≥ 4.

Типы данных: double

Верхние границы, определяемые как действительный вектор или массив двойников. ub представляет верхние границы по элементам в lb  x  ub.

Внутри, paretosearch преобразует массив ub к вектору ub(:).

Пример: ub = [Inf;4;10] средства x(2) ≤ 4, x(3) ≤ 10.

Типы данных: double

Нелинейные ограничения, указанные как дескриптор функции или имя функции. nonlcon - функция, принимающая вектор строки x и возвращает два вектора строк, c(x) и ceq(x).

  • c(x) - вектор строки нелинейных ограничений неравенства в x. paretosearch функция пытается удовлетворить c(x) <= 0 для всех записей c.

  • ceq(x) должен вернуться [], потому что в настоящее время paretosearch не поддерживает нелинейные ограничения равенства.

Если установить UseVectorized опция для true, то nonlcon принимает матрицу размера nоколо-nvars, где матрица представляет n отдельных лиц. nonlcon возвращает матрицу размера nоколо-mc в первом аргументе, где mc - количество нелинейных ограничений неравенства. См. раздел Векторизация фитнес-функции.

Например, x = paretosearch(@myfun,nvars,A,b,Aeq,beq,lb,ub,@mycon), где mycon является функцией MATLAB ®, например:

function [c,ceq] = mycon(x)
c = ...     % Compute nonlinear inequalities at x.
ceq = []    % No nonlinear equalities at x.

Дополнительные сведения см. в разделе Нелинейные ограничения.

Типы данных: char | function_handle | string

Опции оптимизации, указанные как выходные данные optimoptions или как структура.

optimoptions скрывает варианты, перечисленные курсивом; см. раздел Опциональные опции Скрытие.

{} обозначает значение по умолчанию. Дополнительные сведения см. в разделе Опции поиска массива.

Опции для patternsearch и paretosearch

ВыборОписаниеЦенности

ConstraintTolerance

Допуск на зависимости.

Для структуры опций используйте TolCon.

Положительный скаляр | {1e-6}

Display

Уровень отображения.

'off' | 'iter' | 'diagnose' | {'final'}

MaxFunctionEvaluations

Максимальное количество оценок целевой функции.

Для структуры опций используйте MaxFunEvals.

Положительное целое число | {'2000*numberOfVariables'} для patternsearch, {'3000*(numberOfVariables+numberOfObjectives)'} для paretosearch, где numberOfVariables - количество переменных проблемы, и numberOfObjectives - количество объективных функций

MaxIterations

Максимальное число итераций.

Для структуры опций используйте MaxIter.

Положительное целое число | {'100*numberOfVariables'} для patternsearch, {'100*(numberOfVariables+numberOfObjectives)'} для paretosearch, где numberOfVariables - количество переменных проблемы, и numberOfObjectives - количество объективных функций

MaxTime

Общее время (в секундах), допустимое для оптимизации.

Для структуры опций используйте TimeLimit.

Положительный скаляр | {Inf}

MeshTolerance

Допуск для размера сетки.

Для структуры опций используйте TolMesh.

Положительный скаляр | {1e-6}

OutputFcn

Функция, вызываемая функцией оптимизации в каждой итерации. Укажите в качестве дескриптора функции или массива ячеек дескрипторов функции.

Для структуры опций используйте OutputFcns.

Дескриптор функции или массив ячеек дескрипторов функции | {[]}

PlotFcn

Графики выходных данных поиска шаблона. Укажите в качестве имени встроенной функции графика, дескриптора функции или массива ячеек имен встроенных функций графика или дескрипторов функции.

Для структуры опций используйте PlotFcns.

{[]} | Для обоих patternsearch и paretosearch: 'psplotfuncount' | 'psplotmaxconstr' | пользовательская функция печати

Для paretosearch только с несколькими целями: 'psplotdistance' | 'psplotparetof' | 'psplotparetox' | 'psplotspread' | 'psplotvolume'

Для patternsearch только или paretosearch с одной целью: 'psplotbestf' | 'psplotmeshsize' | 'psplotbestx'

PollMethod

Стратегия опроса, используемая при поиске шаблона.

{'GPSPositiveBasis2N'} | 'GPSPositiveBasisNp1' | 'GSSPositiveBasis2N' | 'GSSPositiveBasisNp1' | 'MADSPositiveBasis2N' | 'MADSPositiveBasisNp1'

Для paretosearch только: {'GSSPositiveBasis2np2'}

UseParallel

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

Примечание

Необходимо установить UseCompletePoll кому true для patternsearch для использования векторного или параллельного опроса. Аналогично, установить UseCompleteSearch кому true для векторизированного или параллельного поиска.

Начиная с R2019a, при установке UseParallel опция для true, patternsearch внутренне переопределяет UseCompletePoll установка для true так что он опрашивает параллельно.

true | {false}

UseVectorized

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

Примечание

Необходимо установить UseCompletePoll кому true для patternsearch для использования векторного или параллельного опроса. Аналогично, установить UseCompleteSearch кому true для векторизированного или параллельного поиска.

Для структуры опций используйте Vectorized = 'on' или 'off'.

true | {false}

Опции для paretosearch Только

ВыборОписаниеЦенности

InitialPoints

Начальные точки для paretosearch. Используйте один из следующих типов данных:

  • Матрица с nvars , где каждая строка представляет одну начальную точку.

  • Структура, содержащая следующие поля (все поля необязательны, кроме X0):

    • X0 - Матрица с nvars , где каждая строка представляет одну начальную точку.

    • Fvals - Матрица с numObjectives столбцы, где каждая строка представляет значения целевой функции в соответствующей точке в X0.

    • Cineq - Матрица с numIneq столбцы, где каждая строка представляет значения ограничений нелинейного неравенства в соответствующей точке в X0.

paretosearch вычисляет все отсутствующие значения в Fvals и Cineq поля.

Матрица с nvars столбцы | структура | {[]}

MinPollFraction

Минимальная доля образца для опроса.

Скаляр от 0 до 1 | {0}

ParetoSetSize

Количество точек в наборе Парето.

Положительное целое число | {'max(numberOfObjectives, 60)'}, где numberOfObjectives - количество объективных функций

ParetoSetChangeTolerance

Решатель останавливается, когда относительное изменение меры остановки в окне итераций меньше или равно ParetoSetChangeTolerance.

  • Для трех или менее целей, paretosearch использует измерения объема и разброса.

  • Для четырех или более целей, paretosearch использует измерения разброса и расстояния.

См. раздел Определения алгоритма паретосearch.

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

Примечание

Настройка ParetoSetChangeTolerance < sqrt(eps) ~ 1.5e-8 не рекомендуется.

Положительный скаляр | {1e-4}

Опции для patternsearch Только

ВыборОписаниеЦенности
Тайник

С Cache установить в значение 'on', patternsearch сохраняет историю точек сети, которые она опрашивает. При последующих итерациях, patternsearch не опрашивает точки, близкие к уже опрошенным. Используйте этот параметр, если patternsearch выполняется медленно при вычислении целевой функции. Если целевая функция является стохастической, не используйте эту опцию.

Примечание

Cache не работает при параллельном запуске решателя.

'on' | {'off'}

CacheSize

Размер истории.

Положительный скаляр | {1e4}

CacheTol

Наибольшее расстояние от текущей точки сетки до любой точки в истории для patternsearch во избежание опроса текущей точки. Использовать, если Cache параметр имеет значение 'on'.

Положительный скаляр | {eps}

FunctionTolerance

Допуск для функции. Итерации останавливаются, если изменение значения функции меньше FunctionTolerance и размер сетки меньше, чем StepTolerance. Этот параметр не применяется к опросу MADS.

Для структуры опций используйте TolFun.

Положительный скаляр | {1e-6}

InitialMeshSize

Начальный размер сетки для алгоритма. См. раздел Как работает опрос поиска шаблонов.

Положительный скаляр | {1.0}

InitialPenalty

Начальное значение штрафного параметра. См. раздел Алгоритм решателя нелинейных ограничений.

Положительный скаляр | {10}

MaxMeshSize

Максимальный размер сетки, используемый в шаге опроса или поиска. См. раздел Как работает опрос поиска шаблонов.

Положительный скаляр | {Inf}

MeshContractionFactor

Коэффициент сжатия сетки для неудачной итерации.

Для структуры опций используйте MeshContraction.

Положительный скаляр | {0.5}

MeshExpansionFactor

Коэффициент расширения сетки для успешной итерации.

Для структуры опций используйте MeshExpansion.

Положительный скаляр | {2.0}

MeshRotate

Поверните массив, прежде чем объявить точку оптимальной. См. раздел Параметры сетки.

'off' | {'on'}

PenaltyFactor

Параметр обновления штрафов. См. раздел Алгоритм решателя нелинейных ограничений.

Положительный скаляр | {100}

PlotInterval

Указывает, что функции печати вызываются через каждый интервал.

положительное целое число | {1}

PollOrderAlgorithm

Порядок направлений опроса при поиске шаблона.

Для структуры опций используйте PollingOrder.

'Random' | 'Success' | {'Consecutive'}

ScaleMesh

Автоматическое масштабирование переменных.

Для структуры опций используйте ScaleMesh = 'on' или 'off'.

{true}| false

SearchFcn

Тип поиска, используемый при поиске шаблона. Укажите в качестве имени или дескриптора функции.

Для структуры опций используйте SearchMethod.

'GPSPositiveBasis2N' | 'GPSPositiveBasisNp1' | 'GSSPositiveBasis2N' | 'GSSPositiveBasisNp1' | 'MADSPositiveBasis2N' | 'MADSPositiveBasisNp1' | 'searchga' | 'searchlhs' | 'searchneldermead' | {[]} | пользовательская функция поиска

StepTolerance

Допуск для переменной. Итерации останавливаются, если и изменение положения, и размер сетки меньше StepTolerance. Этот параметр не применяется к опросу MADS.

Для структуры опций используйте TolX.

Положительный скаляр | {1e-6}

TolBind

Допуск привязки. См. раздел Параметры ограничения.

Положительный скаляр | {1e-3}

UseCompletePoll

Выполните опрос вокруг текущей точки. См. раздел Как работает опрос поиска шаблонов.

Для структуры опций используйте CompletePoll = 'on' или 'off'.

true | {false}

UseCompleteSearch

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

Для структуры опций используйте CompleteSearch = 'on' или 'off'.

true | {false}

Пример: options = optimoptions('paretosearch','Display','none','UseParallel',true)

Структура проблемы, заданная как структура со следующими полями:

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

  • x0 - Начальная точка

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

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

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

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

  • lb - Нижняя граница для x

  • ub - Верхняя граница для x

  • nonlcon - Функция нелинейных ограничений

  • solver'paretosearch'

  • options - Параметры, созданные с помощью optimoptions

  • rngstate - Необязательное поле для сброса состояния генератора случайных чисел

Примечание

Все поля в problem являются обязательными, за исключением rngstate, что является необязательным.

Типы данных: struct

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

свернуть все

Точки Парето, возвращенные как mоколо-nvars массив, где m - количество точек на фронте Парето. Каждая строка x представляет одну точку на фронте Парето.

Значения функций на фронте Парето, возвращаемые как mоколо-nf массив. m - количество точек на фронте Парето, и nf - количество фитнес-функций. Каждая строка fval представляет значения функции в одной точке Парето в x.

Причина paretosearch stopped, возвращено как одно из целых значений в этой таблице.

Флаг выходаУсловие остановки
1

Выполняется одно из следующих условий.

  • Размер сетки всех сотрудников меньше options.MeshTolerance и ограничения (если таковые имеются) удовлетворяются в пределах options.ConstraintTolerance.

  • Относительное изменение разброса множества Парето меньше options.ParetoSetChangeTolerance и ограничения (если таковые имеются) удовлетворяются в пределах options.ConstraintTolerance.

  • Относительное изменение объема аппарата Парето меньше options.ParetoSetChangeTolerance и ограничения (если таковые имеются) удовлетворяются в пределах options.ConstraintTolerance.

0Число итераций превышает options.MaxIterationsили количество оценок функций превышает options.MaxFunctionEvaluations.
-1

Оптимизация останавливается функцией вывода или функцией графика.

-2Решателю не удается найти точку, удовлетворяющую всем ограничениям.
-5Время оптимизации превышает options.MaxTime.

Информация о процессе оптимизации, возвращенная в виде структуры со следующими полями:

  • iterations - общее число итераций.

  • funccount - Общее количество оценок функций.

  • volume - гиперобъёмность множества, образованного из точек Парето в пространстве функций. См. раздел Определения алгоритма паретосearch.

  • averagedistance - измерение среднего расстояния точек Парето в функциональном пространстве. См. раздел Определения алгоритма паретосearch.

  • spread - Среднее значение разброса точек Парето. См. раздел Определения алгоритма паретосearch.

  • maxconstraint - Максимальное нарушение ограничений, если таковое имеется.

  • message - Причина прекращения работы алгоритма.

  • rngstate - состояние генератора случайных чисел MATLAB непосредственно перед запуском алгоритма. Можно использовать значения в rngstate для воспроизведения выходных данных при использовании метода случайного опроса, такого как 'MADSPositiveBasis2N' или при использовании метода quasirandom по умолчанию для создания исходной совокупности. См. раздел Воспроизведение результатов, в котором рассматривается идентичный метод для ga.

Остатки ограничения в x, возвращается в виде структуры с этими полями (глоссарий терминов и записей размера поля следует за таблицей).

Имя поляРазмер поляЗаписи
lowermоколо-nvarslbx
uppermоколо-nvarsxub
ineqlinmоколо-nconA*x - b
eqlinmоколо-ncon|Aeq*x - b|
ineqnonlinmоколо-nconc(x)
  • m - Количество возвращенных баллов x на фронте Парето

  • nvars - Количество управляющих переменных

  • ncon - Количество ограничений соответствующего типа (например, количество строк A или количество возвращенных нелинейных уравнений)

  • c(x) - Числовые значения функций нелинейных ограничений

Подробнее

свернуть все

Недоминируемый

Недоминированные точки, также называемые неинфериорными точками, являются точками, для которых ни одна другая точка не имеет более низких значений всех объективных функций. Другими словами, для недоминированных точек ни одно из значений целевой функции не может быть улучшено (понижено) без повышения других значений целевой функции. Смотрите раздел Что такое многообъективная оптимизация?.

Алгоритмы

paretosearch использует поиск по образцу для поиска точек на передней панели Парето. Дополнительные сведения см. в разделе Алгоритм поиска.

Альтернативная функциональность

Приложение

Задача «Оптимизировать интерактивный редактор» обеспечивает визуальный интерфейс для paretosearch.

Расширенные возможности

Представлен в R2018b