在帕累托集合中寻找点
在二维变量的双目标函数的帕累托前寻找点。
有趣= @ (x)[规范(x -[1, 2]) ^ 2;规范(x + (2,1)) ^ 2];rng默认%的再现性X = paretosearch(乐趣,2);
帕累托集合满足约束条件。优化完成,因为在帕累托集体积的相对变化小于“options.ParetoSetChangeTolerance”和约束“options.ConstraintTolerance”内满意。
把解画成散点图。
积(X(:,1)中,x(:,2),“m *”)xlabel(“x”(1))ylabel('×(2)')
从理论上说,这个问题的解决是一个直线距离[-2,-1]
至[1,2]
。paretosearch
返回这条直线附近的均匀间隔点。
创建在两个维度受试者的帕累托前用于两目标问题的线性约束X(1)+ X(2)<= 1
。
有趣= @ (x)[规范(x -[1, 2]) ^ 2;规范(x + (2,1)) ^ 2];一个= [1];b = 1;rng默认%的再现性X = paretosearch(乐趣,2,A,B);
帕累托集合满足约束条件。优化完成,因为在帕累托集体积的相对变化小于“options.ParetoSetChangeTolerance”和约束“options.ConstraintTolerance”内满意。
把解画成散点图。
积(X(:,1)中,x(:,2),“m *”)xlabel(“x”(1))ylabel('×(2)')
从理论上说,这个问题的解决是一个直线距离[-2,-1]
至[0,1]
。paretosearch
返回这条直线附近的均匀间隔点。
在两个维度受边界两个目标问题创建一个帕累托前X(1)> = 0
和X(2)<= 1
。
有趣= @ (x)[规范(x -[1, 2]) ^ 2;规范(x + (2,1)) ^ 2];LB = [0,-Inf];%×(1)> = 0乌兰巴托=[正无穷,1];%×(2)<= 1rng默认%的再现性x = paretosearch(乐趣2[]、[][],[],磅,乌兰巴托);
帕累托集合满足约束条件。优化完成,因为在帕累托集体积的相对变化小于“options.ParetoSetChangeTolerance”和约束“options.ConstraintTolerance”内满意。
把解画成散点图。
积(X(:,1)中,x(:,2),“m *”)xlabel(“x”(1))ylabel('×(2)')
所有的解决方案要点是在约束边界X(1)= 0
要么X(2)= 1
。
为二维有界的双目标问题建立一个帕累托前缘-1.1 <= X(I)<= 1.1
和非线性约束范数(X)^ 2 <= 1.2
。非线性约束函数出现在这个示例的末尾,如果您以活动脚本的形式运行这个示例,它就可以正常工作。要以其他方式运行此示例,请将非线性约束函数作为文件包含在MATLAB®路径中。
为了更好地看到非线性约束的效果,设置选项使用大量帕累托集大小。
rng默认%的再现性有趣= @ (x)[规范(x -[1, 2]) ^ 2;规范(x + (2,1)) ^ 2];磅= [-1.1,-1.1];UB = [1.1,1.1]。选择= optimoptions ('paretosearch',“ParetoSetSize”,200);x = paretosearch(乐趣2[]、[][],[],磅,乌兰巴托,@circlecons,选项);
帕累托集合满足约束条件。优化完成,因为在帕累托集体积的相对变化小于“options.ParetoSetChangeTolerance”和约束“options.ConstraintTolerance”内满意。
把解画成散点图。包括一个圆形约束边界的图。
图图(X(:,1)中,x(:,2),“k *’)xlabel(“x”(1))ylabel('×(2)')保持上长方形(“位置”,[ - 1.2 -1.2 2.4 2.4],“曲率”1,“EdgeColor”,“r”) xlim([-1.2,0.5]) ylim([-0.5,1.2])轴广场持有离
解的点是正的x (1)
值或负值x (2)
值接近非线性约束边界。
函数并[c,CEQ] = circlecons(x)的CEQ = [];C =范数(X)^ 2 - 1.2;结束
要监控进展paretosearch
,指定'psplotparetof'
图的功能。
有趣= @ (x)[规范(x -[1, 2]) ^ 2;规范(x + (2,1)) ^ 2];选择= optimoptions ('paretosearch','PlotFcn','psplotparetof');磅= (4,4);乌兰巴托=磅;X = paretosearch(乐趣,2,[],[],[],[],LB,UB,[],选项);
帕累托集合满足约束条件。优化完成,因为在帕累托集体积的相对变化小于“options.ParetoSetChangeTolerance”和约束“options.ConstraintTolerance”内满意。
解看起来像半径为18的四分之一圆弧,可以证明是解析解。
通过调用获取帕累托前两个函数空间和参数空间paretosearch
同时与x
和fval
输出。设置选项来绘制在这两个函数空间和参数空间帕累托集。
有趣= @ (x)[规范(x -[1, 2]) ^ 2;规范(x + (2,1)) ^ 2];磅= (4,4);乌兰巴托=磅;选择= optimoptions ('paretosearch','PlotFcn'{'psplotparetof'“psplotparetox”});rng默认%的再现性[X,FVAL] = paretosearch(乐趣,2,[],[],[],[],LB,UB,[],选项);
帕累托集合满足约束条件。优化完成,因为在帕累托集体积的相对变化小于“options.ParetoSetChangeTolerance”和约束“options.ConstraintTolerance”内满意。
目标函数空间的解析解是半径为18的四分之一圆弧。在参数空间中,解析解是一条直线[-2,-1]
至[1,2]
。将溶液点是接近的分析曲线。
设置选项以监视Pareto集解决方案过程。同时,获得更多的输出paretosearch
使您能够了解解决方案流程。
选择= optimoptions ('paretosearch','显示',“通路”,...'PlotFcn'{'psplotparetof'“psplotparetox”});有趣= @ (x)[规范(x -[1, 2]) ^ 2;规范(x + (2,1)) ^ 2];磅= (4,4);乌兰巴托=磅;rng默认%的再现性[x, fval exitflag、输出]= paretosearch(乐趣2[]、[][],[],磅,乌兰巴托,[],选项);
ITER F-计数NumSolu万博 尤文图斯tions传播卷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帕累托组发现,满足的约束。优化完成,因为在帕累托集体积的相对变化小于“options.ParetoSetChangeTolerance”和约束“options.ConstraintTolerance”内满意。
检查附加输出。
流(“退出旗% d。\ n”,exitflag)
出口标志1。
DISP(输出)
迭代:10 funccount:2189体积:304.4256 averagedistance:0.0215传播:0.1742 maxconstraint:0消息:“帕累托集发现满足约束。......” rngstate:1x1的结构]
得到并检验帕累托前沿约束残差。用线性不等式约束创建一个问题总和(x) < = 1/2
和非线性不等式约束范数(X)^ 2 <= 1.2
。为了提高准确性,在帕累托前沿使用200点,和aParetoSetChangeTolerance
的1E-7
,并给出自然界限-1.2 <= X(I)<= 1.2
。
非线性约束函数出现在这个示例的末尾,如果您以活动脚本的形式运行这个示例,它就可以正常工作。要以其他方式运行此示例,请将非线性约束函数作为文件包含在MATLAB®路径中。
有趣= @ (x)[规范(x -[1, 2]) ^ 2;规范(x + (2,1)) ^ 2];一个= [1];B = -1/2;磅= [-1.2,-1.2];乌兰巴托=磅;nonlcon = @circlecons;rng默认%的再现性选择= optimoptions ('paretosearch',“ParetoSetChangeTolerance”,1E-7,...'PlotFcn'{'psplotparetof'“psplotparetox”},“ParetoSetSize”,200);
呼叫paretosearch
使用所有输出。
[X,FVAL,exitflag,输出残差] = paretosearch(乐趣,2,A,B,[],[],LB,UB,nonlcon,选项);
帕累托集合满足约束条件。优化完成,因为在帕累托集体积的相对变化小于“options.ParetoSetChangeTolerance”和约束“options.ConstraintTolerance”内满意。
不等式约束减少相比无约束集帕累托集合的大小。检查返回残差。
流('最大线性不等式约束残差为%f.\n'马克斯(residuals.ineqlin))
线性不等式约束残余最大值为0.000000。
流(“最大非线性不等式约束残差%F。\ N”马克斯(residuals.ineqnonlin))
最大非线性不等式约束残差为-0.000152。
最大返回残差是负的,这意味着所有的返回点是可行的。最大返回残差接近于零,这意味着每个约束是对某些时刻的活动。
函数并[c,CEQ] = circlecons(x)的CEQ = [];C =范数(X)^ 2 - 1.2;结束
nvars
- - - - - -数量的变量一个
- - - - - -线性不等式约束线性不等式约束,指定为实矩阵。一个
是一个米
——- - - - - -nvars
矩阵,米
是不等式的个数。
一个
编码米
线性不等式
A * x < =
,
哪里x
是列向量nvars
变量X(:)
和b
列向量是米
元素。
例如,指定
x1+ 2x2≤10
3.x1+ 4x2≤20
5x1+ 6x2≤30,
给这些约束:
A = [1,2; 3,4; 5,6];B = [10; 20; 30]。
例:要指定控制变量sum为1或更小,请给出约束条件A =酮(1,N)
和b = 1
。
数据类型:双
b
- - - - - -线性不等式约束线性不等式约束,指定为实向量。b
是一个米
相关的 - 元素矢量一个
矩阵。如果你通过b
作为行向量,求解器内部进行转换b
到列向量b (:)
。
b
编码米
线性不等式
A * x < =
,
哪里x
是列向量N
变量X(:)
和一个
是大小的矩阵米
——- - - - - -N
。
例如,指定
x1+ 2x2≤10
3.x1+ 4x2≤20
5x1+ 6x2≤30,
给这些约束:
A = [1,2; 3,4; 5,6];B = [10; 20; 30]。
例:要指定控制变量sum为1或更小,请给出约束条件A =酮(1,N)
和b = 1
。
数据类型:双
Aeq
- - - - - -线性等式约束线性等式约束,指定为一个实矩阵。Aeq
是一个我
——- - - - - -nvars
矩阵,我
是等式的数目。
Aeq
编码我
线性等式
AEQ * X = BEQ
,
哪里x
是列向量N
变量X(:)
和说真的
列向量是我
元素。
例如,指定
x1+ 2x2+ 3x3.= 10
2x1+ 4x2+x3.= 20,
给这些约束:
Aeq = [1、2、3、2、4、1];说真的= (10、20);
例:要指定控制变量之和为1,给予约束AEQ =酮(1,N)
和说真的= 1
。
数据类型:双
说真的
- - - - - -线性等式约束线性等式约束,指定为实数向量。说真的
是一个我
相关的 - 元素矢量Aeq
矩阵。如果你通过说真的
作为行向量,求解器内部进行转换说真的
到列向量BEQ(:)
。
说真的
编码我
线性等式
AEQ * X = BEQ
,
哪里x
是列向量N
变量X(:)
和Aeq
是大小的矩阵毫克当量
——- - - - - -N
。
例如,指定
x1+ 2x2+ 3x3.= 10
2x1+ 4x2+x3.= 20,
给这些约束:
Aeq = [1、2、3、2、4、1];说真的= (10、20);
例:要指定控制变量之和为1,给予约束AEQ =酮(1,N)
和说真的= 1
。
数据类型:双
磅
- - - - - -下界[]
(默认)|实向量或阵列下界,指定为实向量或双打的阵列。磅
表示下界元素磅
≤x
≤UB
。
在内部,paretosearch
将一个数组磅
的向量磅(:)
。
例:LB = [0; -Inf; 4]
手段X(1)≥0
,x (3)≥4
。
数据类型:双
UB
- - - - - -上限[]
(默认)|实向量或阵列上限,指定为实向量或双打的阵列。UB
表示上限逐元素在磅
≤x
≤UB
。
在内部,paretosearch
将一个数组UB
的向量乌兰巴托(:)
。
例:乌兰巴托= (Inf; 4; 10)
手段X(2)≤4
,x (3)≤10
。
数据类型:双
nonlcon
- - - - - -非线性约束非线性约束,指定为功能手柄或函数的名称。nonlcon
是一个接受行向量的函数吗x
和返回两个行向量,C(X)
和量表(x)
。
C(X)
是在非线性不等式约束的行矢量x
。该paretosearch
功能试图满足C(X)<= 0
对于所有条目c
。
量表(x)
必须返回[]
,因为目前paretosearch
不支持非线性等式约万博1manbetx束。
如果设置了UseVectorized
选项真正
,然后nonlcon
接受大小的矩阵n
——- - - - - -nvars
,其中,所述矩阵表示n
个人。nonlcon
返回大小的矩阵n
——- - - - - -MC
在第一个参数,其中MC
是非线性不等式约束的数目。看到向量化适应度函数。
例如,x = paretosearch(据nvar @myfun, A、b Aeq,说真的,磅,乌兰巴托,@mycon)
,其中mycon
MATLAB是一种®功能如下:
函数[c,ceq] = mycon(x) c =…计算x处的非线性不等式。ceq = [] % x处没有非线性不等式。
欲了解更多信息,请参阅非线性约束(优化工具箱)。
数据类型:字符
|function_handle
|串
选项
- - - - - -优化选项optimoptions
|结构体优化选项,指定的输出optimoptions
或作为结构。
optimoptions
隐藏其中列出的选项斜体;看到optimoptions隐藏的选项。
{}
表示默认值。见选项细节模式搜索选项。
对于选项patternsearch
和paretosearch
选项 | 描述 | 值 |
---|---|---|
|
公差限制。 对于期权的结构,使用 |
正标| |
|
显示水平。 |
“关” |“通路” |'诊断' |{'最后'} |
|
目标函数评估的最大数量。 对于期权的结构,使用 |
正整数| |
|
最大迭代次数。 对于期权的结构,使用 |
正整数| |
|
总时间(单位:秒),允许进行优化。 对于期权的结构,使用 |
正标| |
|
公差的网目尺寸。 对于期权的结构,使用 |
正标| |
|
功能优化的函数调用在每次迭代。指定为功能句柄或函数处理的一个单元阵列。 对于期权的结构,使用 |
功能句柄或功能手柄单元阵列| |
|
从模式搜索输出的情节。作为指定的名称内建绘图功能,功能手柄,或名称的单元阵列内置的情节函数或函数处理。 对于期权的结构,使用 |
为 为 |
|
模式搜索中使用的轮询策略。 |
为 |
|
在并行计算客观和非线性约束功能。看到向量化和并行选项(用户功能评价)和如何使用全局优化工具箱并行处理。 |
|
|
指定函数是否向量化。看到向量化和并行选项(用户功能评价)和向量化目标和约束函数。 对于期权的结构,使用 |
|
对于选项paretosearch
只有
选项 | 描述 | 值 |
---|---|---|
|
初始点
|
矩阵 |
|
图案到轮询的最低分数。 | 通过0-1标| |
|
在帕累托集点数。 | 正整数| |
|
解算器停止时处于停止量度超过迭代的窗口的相对变化小于或等于
当在任何适用的措施的相对变化小于所述解算器停止 请注意设置 |
正标| |
对于选项patternsearch
只有
选项 | 描述 | 值 |
---|---|---|
缓存 | 与 |
|
CacheSize | 历史上的大小。 |
正标| |
CacheTol | 最大的距离,从目前的网点到历史上的任何一点,为了 |
正标| |
FunctionTolerance |
公差的功能。迭代停止如果函数值的变化小于 对于期权的结构,使用 |
正标| |
InitialMeshSize |
初始网格尺寸的算法。看到如何模式搜索查询作品。 |
正标| |
InitialPenalty | 惩罚参数的初始值。看到非线性约束求解算法。 |
正标| |
MaxMeshSize | 在轮询或搜索步骤中使用的最大网格大小。看到如何模式搜索查询作品。 |
正标| |
MeshContractionFactor |
网不成功迭代收缩的因素。 对于期权的结构,使用 |
正标| |
MeshExpansionFactor |
网成功迭代展开因素。 对于期权的结构,使用 |
正标| |
MeshRotate | 在声明一个点为最优之前旋转模式。看到网格选项。 |
|
PenaltyFactor | 点球更新参数。看到非线性约束求解算法。 |
正标| |
PlotInterval | 指定在每个间隔调用绘图函数。 |
正整数| |
PollOrderAlgorithm |
在模式搜索中轮询方向的顺序。 对于期权的结构,使用 |
|
ScaleMesh |
变量的自动缩放。 对于期权的结构,使用 |
|
SearchFcn |
键入模式搜索中使用的搜索。指定为名称或功能句柄。 对于期权的结构,使用 |
|
StepTolerance |
变量的公差。如果位置变化和网格大小都小于,迭代就停止 对于期权的结构,使用 |
正标| |
TolBind | 结合宽容。看到约束参数。 |
正标| |
UseCompletePoll |
完成围绕当前点的民意调查。看到如何模式搜索查询作品。 对于期权的结构,使用 |
|
UseCompleteSearch |
围绕当前点完成搜索时,搜索方法是调查方法。看到搜索和查询。 对于期权的结构,使用 |
|
例:选项= optimoptions( 'paretosearch', '显示', '无', 'UseParallel',真)
问题
- - - - - -结构问题问题结构,指定为具有以下字段的结构:
目的
——目标函数
X0
- 初始点
Aineq
-线性不等式约束的矩阵
bineq
- 载体的线性不等式约束
Aeq
- 矩阵的线性等式约束
说真的
- 载体的线性等式约束
磅
-往下界x
UB
- 上开往x
nonlcon
- 非线性约束函数
求解
- - - - - -'paretosearch'
选项
- 选项与创建optimoptions
rngstate
-可选字段,用于重置随机数生成器的状态
在各领域问题
都是必需的,除了rngstate
,这是可选的。
数据类型:结构体
x
- 帕累托点米
——- - - - - -nvars
排列帕累托点,返回为米
——- - - - - -nvars
阵列,其中米
是帕累托前沿的点的个数。每一行的x
代表在帕累托前沿的一个点。
fval
-帕累托前沿的函数值米
——- - - - - -NF
排列上帕累托前面函数值,返回一个米
——- - - - - -NF
数组中。米
是点上的帕累托前沿的数量,并且NF
是的健身功能的数量。每一行的fval
表示在一个帕累托点的函数值x
。
exitflag
- 原因paretosearch
停止原因paretosearch
停止,返回此表中的整数值之一。
出口标志 | 停止条件 |
---|---|
1 |
满足以下条件之一。
|
0 |
迭代次数超过options.MaxIterations ,或者函数计算的次数超过options.MaxFunctionEvaluations 。 |
-1 |
通过输出函数或绘图函数停止优化。 |
-2 |
求解器找不到满足所有约束条件的点。 |
-5 |
优化时间超过options.MaxTime 。 |
输出
- 关于优化过程的信息关于优化过程的信息,返回与这些领域的结构:
迭代
-迭代的总次数。
funccount
- 功能评估的总数。
体积
-功能空间中由帕累托点形成的集合的超容量。看到定义为paretosearch算法。
averagedistance
-函数空间中Pareto点的平均距离度量。看到定义为paretosearch算法。
传播
-平均扩展衡量帕累托点。看到定义为paretosearch算法。
maxconstraint
- 最大约束冲突,如果有的话。
消息
-算法终止的原因。
rngstate
- MATLAB随机数生成器在算法开始之前的状态。可以使用in中的值rngstate
重现输出,当你使用一个随机调查方法如“MADSPositiveBasis2N”
或者使用默认的准随机方法来创建初始种群。看到结果重现,其中讨论了相同的技术遗传算法
。
残差
-约束残差在x
约束残差在x
,以带有这些字段的结构返回(表后面是字段大小术语和条目的词汇表)。
字段名 | 字段大小 | 条目 |
---|---|---|
降低 |
米 ——- - - - - -nvars |
磅 - - - - - -x |
上 |
米 ——- - - - - -nvars |
x - - - - - -UB |
ineqlin |
米 ——- - - - - -NCON |
A * X - B |
eqlin |
米 ——- - - - - -NCON |
| AEQ * X - B | |
ineqnonlin |
米 ——- - - - - -NCON |
C(X) |
米
- 返回的点数x
帕累托前
nvars
-控制变量的数量
NCON
- 相关类型的约束(诸如行数数一个
或返回的非线性等式的个数)
C(X)
- 数字的非线性约束函数值
paretosearch
使用模式搜索来搜索帕累托前沿的点。有关详细信息,请参见paretosearch算法。
若要并行运行,请设置“UseParallel”
选项真正
。
选择= optimoptions ('
solvername
”, 'UseParallel',真)
欲了解更多信息,请参阅如何使用全局优化工具箱并行处理。
아래MATLAB명령에해당하는링크를클릭하셨습니다。
이명령을MATLAB명령창에입력해실행하십시오。웹브라우저에서는MATLAB명령을지원하지않습니다。
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文),以获得最佳的网站表现。其他MathWorks国家站点不适合来自您所在位置的访问。