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.

Примеры

свернуть все

Найдите точки на передней стороне Парето 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' функция plot.

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- 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 элементы.

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

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

Нижние границы в виде вектора действительных чисел или массива типа 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- 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 скрывает опции, перечисленные курсивом; см. Опции, которые Скрывает 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

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

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

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)

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

  • 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 остановленный, возвращенный как одно из целочисленных значений в этой таблице.

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

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

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

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

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

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

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

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

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

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

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

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

Больше о

свернуть все

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

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

Алгоритмы

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

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

Приложение

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

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

Введенный в R2018b