paretosearch

Найдите точки во Множестве Парето

Синтаксис

x = paretosearch(fun,nvars)
x = paretosearch(fun,nvars,A,b)
x = paretosearch(fun,nvars,A,b,Aeq,beq)
x = paretosearch(fun,nvars,A,b,Aeq,beq,lb,ub)
x = paretosearch(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon)
x = paretosearch(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,options)
x = paretosearch(problem)
[x,fval] = paretosearch(___)
[x,fval,exitflag,output] = paretosearch(___)
[x,fval,exitflag,output,residuals] = paretosearch(___)

Описание

пример

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

пример

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

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.

Примеры

свернуть все

Найдите точки на передней стороне Парето 2D целевой функции двумерной переменной.

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)')

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

Создайте переднюю сторону Парето для 2D объективной проблемы, в двух измерениях подвергают линейному ограничению 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)')

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

Создайте переднюю сторону Парето для 2D объективной проблемы, в двух измерениях подвергают границам 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)')

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

Создайте переднюю сторону Парето для 2D объективной проблемы, в двух измерениях подвергают границам -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

Точки решения, которые имеют положительные значения 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'.

Решение похоже на круговую четвертью дугу с радиусом 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'.

Аналитическое решение на пробеле целевой функции является круговой четвертью дугой радиуса 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'.

Исследуйте дополнительные выходные параметры.

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'.

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

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.000244.

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

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.

Например, чтобы задать

x 1 + 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-by-N.

Например, чтобы задать

x 1 + 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-by-nvars матрица, где Me является количеством равенств.

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

Aeq*x = beq,

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

Например, чтобы задать

x 1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x 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.

Например, чтобы задать

x 1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x 3 = 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-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.

Для получения дополнительной информации смотрите Нелинейные Ограничения (Optimization Toolbox).

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

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

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

Допуск на размере mesh.

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

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

OutputFcn

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

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

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

PlotFcn

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

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

{[]} | И для patternsearch и для paretosearch: 'psplotfuncount' | пользовательская функция построения графика

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

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

PollMethod

Опрос стратегии используется в поиске шаблона.

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

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

UseParallel

Вычислите объективные и нелинейные ограничительные функции параллельно. См. Векторизованные и Параллельные Опции (Оценка Функции пользователя) и Как Использовать Параллельную обработку в Global Optimization Toolbox.

true | {false}

UseVectorized

Задает, векторизованы ли функции. См. Векторизованные и Параллельные Опции (Оценка Функции пользователя) и Векторизуйте Функции Цели и Ограничения.

Для структуры опций используйте 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 использует меры по расстоянию и распространение.

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

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

Примечание

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

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

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

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

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

'on' | {'off'}

CacheSize

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

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

CacheTol

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

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

FunctionTolerance

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

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

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

InitialMeshSize

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

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

InitialPenalty

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

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

MaxMeshSize

Максимальный размер mesh используется в опросе или поисковом шаге. Смотрите Как Поиск Шаблона Опрос работ.

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

MeshContractionFactor

Поймайте в сети фактор сокращения для неудачной итерации.

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

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

MeshExpansionFactor

Поймайте в сети фактор расширения для успешной итерации.

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

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

MeshRotate

Вращайте шаблон прежде, чем объявить, что точка оптимальна. См. Опции Mesh.

'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

Допуск на переменной. Итерации останавливаются, если и изменение в положении и размер mesh являются меньше, чем 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)

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

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

  • x0 Отправная точка

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

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

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

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

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

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

  • nonlcon — Нелинейная ограничительная функция

  • solver'paretosearch'

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

  • Поле rngstate — Optional, чтобы сбросить состояние генератора случайных чисел

Примечание

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

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

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

свернуть все

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

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

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

Exitflag Остановка условия
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 — Общее количество функциональных оценок.

  • объем Гиперобъем набора, сформированного от Парето, указывает в функциональном пространстве. См. Определения для paretosearch Алгоритма.

  • averagedistance — Средняя мера по расстоянию Парето указывает в функциональном пространстве. См. Определения для paretosearch Алгоритма.

  • spread — Мера по среднему спреду точек Парето. См. Определения для paretosearch Алгоритма.

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

  • сообщение Рассуждайте почему отключенный алгоритм.

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

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

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

  • nvars — Количество контрольных переменных

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

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

Больше о

свернуть все

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

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

Алгоритмы

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

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

Введенный в R2018b