paretosearch

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

Описание

пример

x = paretosearch(fun,nvars) находит недоминированные точки мультиобъективной функции fun. The 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. The 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. Нелинейная функция ограничения появляется в конце этого примера и работает, если запустить этот пример как live скрипт. Чтобы запустить этот пример в противном случае, включите нелинейную функцию ограничения в качестве файла в пути 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, которая может быть показана как аналитическое решение.

Получите фронт Парето в пространстве функций и пространстве параметров путем вызова 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]. Точки решения близки к аналитическим кривым.

Установите опции, чтобы контролировать процесс установки решения Парето. Кроме того, получите больше выходов от 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 точек на фронте Парето и ParetoSetChangeTolerance от 1e-7, и дайте естественные границы -1.2 <= x(i) <= 1.2.

Нелинейная функция ограничения появляется в конце этого примера и работает, если запустить этот пример как live скрипт. Чтобы запустить этот пример в противном случае, включите нелинейную функцию ограничения в качестве файла в пути 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-by- nvars, где матрица представляет n индивидуумов. fun возвращает матрицу размера n-by- m, где m количество целевых функций. См. Векторизация функции соответствия.

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

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

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

Пример: 4

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

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

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

A*x <= b,

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

Для примера, чтобы задать

<reservedrangesplaceholder1> 1 + 2 <reservedrangesplaceholder0> 2  10
3 <reservedrangesplaceholder1> 1 + 4 <reservedrangesplaceholder0> 2  20
5 <reservedrangesplaceholder1> 1 + 6 <reservedrangesplaceholder0> 2  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-by- N.

Для примера, чтобы задать

<reservedrangesplaceholder1> 1 + 2 <reservedrangesplaceholder0> 2  10
3 <reservedrangesplaceholder1> 1 + 4 <reservedrangesplaceholder0> 2  20
5 <reservedrangesplaceholder1> 1 + 6 <reservedrangesplaceholder0> 2  30,

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

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

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

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

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

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

Aeq*x = beq,

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

Для примера, чтобы задать

<reservedrangesplaceholder2> 1 + 2 <reservedrangesplaceholder1> 2 + 3 <reservedrangesplaceholder0> 3 = 10
2 <reservedrangesplaceholder2> 1 + 4 <reservedrangesplaceholder1> 2 + <reservedrangesplaceholder0> 3 = 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-by- N.

Для примера, чтобы задать

<reservedrangesplaceholder2> 1 + 2 <reservedrangesplaceholder1> 2 + 3 <reservedrangesplaceholder0> 3 = 10
2 <reservedrangesplaceholder2> 1 + 4 <reservedrangesplaceholder1> 2 + <reservedrangesplaceholder0> 3 = 20,

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

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

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

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

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

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

Пример: lb = [0;-Inf;4] означает x(1) ≥ 0, x(3) ≥ 4.

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

Верхние границы, заданные как вектор действительных чисел или массив типа 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-by- nvars, где матрица представляет n индивидуумов. nonlcon возвращает матрицу размера n-by- 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

Level of 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

Функция, которая вызывается оптимизационной функцией при каждой итерации. Задайте как указатель на функцию или cell-массив указателей на функцию.

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

Указатель на функцию или cell-массив указателей на функцию | {[]}

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

Вычислите функции объектива и нелинейных ограничений параллельно. См. Векторизованные и параллельные опции и как использовать параллельную обработку в Global Optimization Toolbox.

Примечание

Вы должны задать 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 использует измерения распределения и расстояния.

Смотрите Определения для Алгоритма Паретосеарха.

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

Примечание

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

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

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

ОпцияОписаниеЗначения
Кэш

С Cache установлено на 'on', patternsearch сохраняет историю mesh, которые он опрашивает. При последующих итерациях, 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-by- nvars массив, где m - число точек на фронте Парето. Каждая строка x представляет одну точку на фронте Парето.

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

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

Выходной флагУсловие остановки
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 - Гипер-объем множества, образованного из точек Парето в функциональном пространстве. Смотрите Определения для Алгоритма Паретосеарха.

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

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

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

  • message - Причина, по которой алгоритм остановился.

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

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

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

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

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

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

Подробнее о

свернуть все

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

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

Алгоритмы

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

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

Приложение

Задача Optimize Live Editor обеспечивает визуальный интерфейс для paretosearch.

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

Введенный в R2018b