Main Content

本页采用了机器翻译。点击此处可查看英文原文。

paretosearch

在帕累托集中查找点

说明

示例

x = paretosearch(fun,nvars) 找到多目标函数 fun 的非支配点。nvars 参量是优化问题的维度(决策变量的数量)。

示例

x = paretosearch(fun,nvars,A,b) 找到满足线性不等式 A*xb 的非支配点。请参阅 线性不等式约束

x = paretosearch(fun,nvars,A,b,Aeq,beq) 找到满足线性约束 Aeq*x = beqA*xb 的非支配点。如果不存在线性不等式,则设置 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) 应用 nonlcon 中定义的非线性不等式 c(x)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 的非支配点,其中 problemproblem 中描述的结构体。

示例

对于任何输入变量,[x,fval] = paretosearch(___) 返回矩阵 fval,即 x 中所有解(行)的 fun 中的所有目标函数值。输出 fvalnf 列,其中 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)')

理论上,这个问题的解是从 [-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)')

理论上,这个问题的解是从 [-2,-1][0,1] 的一条直线。paretosearch 返回靠近这条线的等距点。

为二维双目标问题创建帕累托前沿,受限于边界 x(1) >= 0x(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) = 0x(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

具有正 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 的四分之一圆弧,可以证明其为解析解。

通过使用 xfval 输出调用 paretosearch,在函数空间和参数空间中获得帕累托前沿。设置选项以在函数空间和参数空间中绘制帕累托集。

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       7.6126e-01   3.4654e+02
   2       702        27       9.5232e-01   2.9452e+02
   3      1029        27       6.6332e-02   2.9904e+02
   4      1357        36       1.3874e-01   3.0070e+02
   5      1690        37       1.5379e-01   3.0200e+02
   6      2014        50       1.7828e-01   3.0252e+02
   7      2214        59       1.8536e-01   3.0320e+02
   8      2344        60       1.9435e-01   3.0361e+02
   9      2464        60       2.1055e-01   3.0388e+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: 2464
             volume: 303.6076
    averagedistance: 0.0250
             spread: 0.2105
      maxconstraint: 0
            message: 'Pareto set found that satisfies the constraints. ...'
           rngstate: [1x1 struct]

获取并检查帕累托前沿约束残差。创建一个具有线性不等式约束 sum(x) <= -1/2 和非线性不等式约束 norm(x)^2 <= 1.2 的问题。为了提高准确性,在帕累托前沿使用 200 个点,以及 1e-7ParetoSetChangeTolerance,并给出自然边界 -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'.

与无约束的集合相比,不等式约束减少了帕累托集的大小。检查返回的残差。

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

返回的最大残差为负,这意味着所有返回的点都是可行的。返回的最大残差接近于零,这意味着每个约束对于某些点都是有效的。

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

输入参数

全部折叠

要优化的目标函数,指定为函数句柄或函数名称。

fun 是一个函数,它接受长度为 nvars 的双精度实数行向量 x,并返回目标函数值的实数向量 F(x)。有关写入 fun 的详细信息,请参阅 计算目标函数

如果将 UseVectorized 选项设置为 true,则 fun 将接受大小为 n x nvars 的矩阵,其中该矩阵代表 n 个体。fun 返回大小为 n x m 的矩阵,其中 m 是目标函数的数量。请参阅 向量化适应度函数

示例: @(x)[sin(x),cos(x)]

数据类型: char | function_handle | string

变量的数量,指定为正整数。求解器传递长度为 nvarsfun 的行向量。

示例: 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 是与 A 矩阵相关的包含 M 个元素的向量。如果将 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

线性等式约束,指定为实矩阵。AeqMe×nvars 矩阵,其中 Me 是等式的数量。

Aeq 以如下形式编写 Me 个线性等式

Aeq*x = beq

其中,x 是由 N 个变量组成的列向量 x(:)beq 是具有 Me 个元素的列向量。

例如,要指定

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

提供以下约束:

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

示例: 要指定控制变量的总和为 1,请给出约束 Aeq = ones(1,N)beq = 1

数据类型: double

线性等式约束,指定为实数向量。beq 是与 Aeq 矩阵相关的包含 Me 个元素的向量。如果将 beq 作为行向量传递,求解器会在内部将 beq 转换为列向量 beq(:)

beq 以如下形式编写 Me 个线性等式

Aeq*x = beq

其中,x 是由 N 个变量组成的列向量 x(:)Aeq 是大小为 Meq×N 的矩阵。

例如,要指定

x1 + 2 x2 + 3 x3 = 10
2 x1 + 4 x2 + 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) ≥ 0x(3) ≥ 4

数据类型: double

上界,指定为实数向量或双精度数组。ub 表示 lb x ub 中元素的上界。

paretosearch 在内部将数组 ub 转换为向量 ub(:)

示例: ub = [Inf;4;10] 表示 x(2) ≤ 4x(3) ≤ 10

数据类型: double

非线性约束,指定为函数句柄或函数名称。nonlcon 是一个接受行向量 x 并返回两个行向量 c(x)ceq(x) 的函数。

  • c(x)x 处非线性不等式约束的行向量。paretosearch 函数尝试使 c 的所有条目满足 c(x) <= 0

  • ceq(x) 必须返回 [],因为目前 paretosearch 不支持非线性等式约束。

如果将 UseVectorized 选项设置为 true,则 nonlcon 将接受大小为 n x nvars 的矩阵,其中该矩阵代表 n 个体。nonlcon 在第一个参量中返回大小为 n x 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 的输出或结构体。

{} 表示默认值。请参阅 模式搜索选项 中的选项详细信息。

适用于 paretosearch 的选项

选项描述

ConstraintTolerance

约束的容差。

对于选项结构体,使用 TolCon

非负标量 | {1e-6}

Display

显示级别。

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

InitialPoints

paretosearch 的初始点。使用这些数据类型之一:

  • 具有 nvars 列的矩阵,其中每行代表一个初始点。

  • 包含以下字段的结构体(除 X0 之外,所有字段都是可选的):

    • X0 - 具有 nvars 列的矩阵,其中每行代表一个初始点。

    • Fvals - 包含 numObjectives 列的矩阵,其中每一行代表 X0 中对应点的目标函数值。

    • Cineq - 包含 numIneq 列的矩阵,其中每一行代表 X0 中对应点的非线性不等式约束值。

paretosearch 计算 FvalsCineq 字段中的任何缺失值。

具有 nvars 列的矩阵 | 结构体 | {[]}

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}

MinPollFraction

要轮询的模式的最小部分。

从 0 到 1 的标量 | {0}

OutputFcn

优化函数在每次迭代时调用的函数。指定为函数句柄或函数句柄的元胞数组。

对于选项结构体,使用 OutputFcns

函数句柄或函数句柄元胞数组 | {[]}

ParetoSetChangeTolerance

当迭代窗口内的停止测量的相对变化小于或等于 ParetoSetChangeTolerance 时,求解器停止。

  • 对于三个或更少的目标,paretosearch 使用数量和价差指标。

  • 对于四个或更多目标,paretosearch 使用扩展和距离测量。

请参阅 paretosearch 算法的定义

当任何适用测量的相对变化小于 ParetoSetChangeTolerance,或者这些测量的时间序列的平方傅里叶变换的最大值相对较小时,求解器停止。请参阅 paretosearch 算法

注意

不建议设置 ParetoSetChangeTolerance < sqrt(eps) ~ 1.5e-8。

非负标量 | {1e-4}

ParetoSetSize

帕累托集中的点数。

正整数 | {'max(numberOfObjectives, 60)'},其中 numberOfObjectives 是目标函数的数量

PlotFcn

模式搜索的输出图。指定为内置绘图函数的名称、函数句柄,或者内置绘图函数或函数句柄名称的元胞数组。

对于选项结构体,使用 PlotFcns

{[]} | 'psplotfuncount' | 'psplotmaxconstr' | 自定义绘图函数

具有多个目标:'psplotdistance' | 'psplotparetof' | 'psplotparetox' | 'psplotspread' | 'psplotvolume'

只有一个目标:'psplotbestf' | 'psplotmeshsize' | 'psplotbestx'

PollMethod

模式搜索中采用的轮询策略。

注意

当问题具有线性等式约束时,您不能使用 MADS 轮询。

{'GPSPositiveBasis2np2'} | 'GPSPositiveBasis2N' | 'GPSPositiveBasisNp1' | 'GSSPositiveBasis2N' | 'GSSPositiveBasisNp1' | 'MADSPositiveBasis2N' | 'MADSPositiveBasisNp1' | '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}

示例: options = optimoptions('paretosearch','Display','none','UseParallel',true)

问题结构体,指定为含有以下字段的结构体:

  • objective - 目标函数

  • nvars - 变量个数

  • 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 停止,以此表中的一个整数值返回。

退出标志停止条件
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 随机数生成器的状态。当您使用随机轮询方法(例如 'MADSPositiveBasis2N')或使用创建初始种群的默认准随机方法时,您可以使用 rngstate 中的值来重现输出。请参阅 重现结果,其中讨论了 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 算法

替代功能

App

优化实时编辑器任务为 paretosearch 提供了一个可视化界面。

扩展功能

版本历史记录

在 R2018b 中推出