在帕累托集合中寻找点
在一个二维变量的双目标函数的帕累托前找点。
有趣= @ (x)[规范(x -[1, 2]) ^ 2;规范(x + (2,1)) ^ 2];rng默认的%的再现性x = paretosearch(有趣,2);
帕累托集合满足约束条件。优化完成是因为帕累托集合体积的相对变化小于“选项”。paretosetchangettolerance '和约束满足于'options. constraintolerance '。
将解绘制成散点图。
情节(x (: 1) x (:, 2),“m *”)包含(“x”(1)) ylabel (“x”(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);
帕累托集合满足约束条件。优化完成是因为帕累托集合体积的相对变化小于“选项”。paretosetchangettolerance '和约束满足于'options. constraintolerance '。
将解绘制成散点图。
情节(x (: 1) x (:, 2),“m *”)包含(“x”(1)) ylabel (“x”(2))
从理论上讲,这个问题的解决是一条直线(2, 1)
来[0, 1]
.paretosearch
返回接近这条线的等间距点。
创建一个受边界约束的二维双目标问题的帕累托前沿x (1) > = 0
和x (2) < = 1
.
有趣= @ (x)[规范(x -[1, 2]) ^ 2;规范(x + (2,1)) ^ 2];磅=(0,负);% x(1) >= 0乌兰巴托=[正无穷,1];% x(2) <= 1rng默认的%的再现性x = paretosearch(有趣,2 ,[],[],[],[], 磅,乌兰巴托);
帕累托集合满足约束条件。优化完成是因为帕累托集合体积的相对变化小于“选项”。paretosetchangettolerance '和约束满足于'options. constraintolerance '。
将解绘制成散点图。
情节(x (: 1) x (:, 2),“m *”)包含(“x”(1)) ylabel (“x”(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];乌兰巴托= [1.1,1.1];选择= optimoptions (“paretosearch”,“ParetoSetSize”, 200);x = paretosearch(有趣,2 ,[],[],[],[], 磅,乌兰巴托,@circlecons选项);
帕累托集合满足约束条件。优化完成是因为帕累托集合体积的相对变化小于“选项”。paretosetchangettolerance '和约束满足于'options. constraintolerance '。
将解绘制成散点图。包括圆形约束边界图。
图绘制(x (: 1), (:, 2),“k *’)包含(“x”(1)) ylabel (“x”(2))举行在矩形(“位置”,[-1.2 -1.2 2.4 2.4],“弯曲”, 1“EdgeColor”,“r”) xlim([-0.5,1.2])轴广场持有从
解点是正的x (1)
值或负x (2)
值接近非线性约束边界。
函数[c,ceq] = circlecons(x) ceq = [];C = norm(x)^2 - 1.2;结束
监督…的进展paretosearch
,指定“psplotparetof”
图的功能。
有趣= @ (x)[规范(x -[1, 2]) ^ 2;规范(x + (2,1)) ^ 2];选择= optimoptions (“paretosearch”,“PlotFcn”,“psplotparetof”);磅= (4,4);乌兰巴托=磅;x = paretosearch(有趣,2 ,[],[],[],[], 磅,乌兰巴托,[]选项);
帕累托集合满足约束条件。优化完成是因为帕累托集合体积的相对变化小于“选项”。paretosetchangettolerance '和约束满足于'options. constraintolerance '。
解看起来像半径为18的1 / 4圆弧,可以被证明是解析解。
通过调用,获得函数空间和参数空间中的帕累托前沿paretosearch
与x
和fval
输出。设置选项以在函数空间和参数空间中绘制帕累托集。
有趣= @ (x)[规范(x -[1, 2]) ^ 2;规范(x + (2,1)) ^ 2];磅= (4,4);乌兰巴托=磅;选择= optimoptions (“paretosearch”,“PlotFcn”,{“psplotparetof”“psplotparetox”});rng默认的%的再现性[x, fval] = paretosearch(有趣,2 ,[],[],[],[], 磅,乌兰巴托,[]选项);
帕累托集合满足约束条件。优化完成是因为帕累托集合体积的相对变化小于“选项”。paretosetchangettolerance '和约束满足于'options. constraintolerance '。
目标函数空间的解析解是半径为18的1 / 4圆弧。在参数空间中,解析解是一条直线(2, 1)
来[1,2]
.解点与解析曲线接近。
设置选项以监视帕累托集解决方案过程。此外,从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-count Num金宝搏官方网站Solutions传播量0 60 11 - 3.7872 e + 02 702 386 12 - 3.4654 e + 02年2 9.4324 e-01 2.9452 e + 27日02年3 1029 27 - 2.9904 e + 02年4 1357 40 0.0000 e + 00 3.0154 e + 2 5 1697 60 1.4903 e-01 3.0369 e + 02 6 1841 60 1.4515 e-01 3.0439 e + 02 7 1961 60 1.7716 e-01 3.0465 e + 60 02 8 2075 1.6123 e-01 3.0475 e + 02年9 2189 60 1.7419 e-01 3.0449 e + 02帕累托集发现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'.
检查额外的输出。
流(“退出旗% d。\ n”exitflag)
出口标志1。
disp(输出)
迭代:10 funccount: 2189 volume: 304.4256 averagedistance: 0.0215 spread: 0.1742 maxconstraint: 0 message: 'Pareto set found that满足约束. ...' rngstate: [1x1 struct]
获得并检查帕累托前约束残差。产生一个线性不等式约束的问题总和(x) < = 1/2
以及非线性不等式约束规范(x) ^ 2 < = 1.2
.为了提高精度,在帕累托前面使用200个点ParetoSetChangeTolerance
的1 e -
,并给予自然的界限-1.2 <= x(i
.
这个非线性约束函数出现在这个例子的末尾,如果您作为一个活动脚本运行这个例子,它就可以工作。要运行此示例,请将非线性约束函数作为文件包含在MATLAB®路径中。
有趣= @ (x)[规范(x -[1, 2]) ^ 2;规范(x + (2,1)) ^ 2];一个= [1];b = 1/2;磅= [-1.2,-1.2];乌兰巴托=磅;nonlcon = @circlecons;rng默认的%的再现性选择= optimoptions (“paretosearch”,“ParetoSetChangeTolerance”1 e -...“PlotFcn”,{“psplotparetof”“psplotparetox”},“ParetoSetSize”, 200);
调用paretosearch
使用所有输出。
[x, fval exitflag、输出残差)= paretosearch(乐趣2 A、b[],[],磅,乌兰巴托,nonlcon,选项);
帕累托集合满足约束条件。优化完成是因为帕累托集合体积的相对变化小于“选项”。paretosetchangettolerance '和约束满足于'options. constraintolerance '。
与无约束集相比,不等式约束减小了帕累托集的大小。检查返回的残差。
流('最大线性不等式约束残差为%f.\n'马克斯(residuals.ineqlin))
最大线性不等式约束残差为0.000000。
流(最大非线性不等式约束残差为%f.\n'马克斯(residuals.ineqnonlin))
最大非线性不等式约束残差为-0.002619。
最大返回残差为负,表示所有返回点都是可行的。返回的最大残差接近于零,这意味着每个约束对于某些点是活动的。
函数[c,ceq] = circlecons(x) ceq = [];C = norm(x)^2 - 1.2;结束
据nvar
- - - - - -数量的变量一个
- - - - - -线性不等式约束线性不等式约束,指定为实矩阵。一个
是一个米
——- - - - - -据nvar
矩阵,米
是不等式的个数。
一个
编码米
线性不等式
A * x < =
,
在哪里x
列向量是据nvar
变量x (:)
,b
列向量是米
元素。
例如,指定
x1+ 2x2≤10
3.x1+ 4x2≤20
5x1+ 6x2≤30日
给这些约束:
= [1, 2, 3, 4, 5, 6);b =(10、20、30);
例子:要指定控制变量的和为1或更小,请给出约束条件一个= 1 (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日
给这些约束:
= [1, 2, 3, 4, 5, 6);b =(10、20、30);
例子:要指定控制变量的和为1或更小,请给出约束条件一个= 1 (1,N)
和b = 1
.
数据类型:双
Aeq
- - - - - -线性等式约束线性等式约束,指定为实矩阵。Aeq
是一个我
——- - - - - -据nvar
矩阵,我
是等式的个数。
Aeq
编码我
线性等式
Aeq * x =说真的
,
在哪里x
列向量是N
变量x (:)
,说真的
列向量是我
元素。
例如,指定
x1+ 2x2+ 3x3.= 10
2x1+ 4x2+x3.= 20,
给这些约束:
Aeq =[1、2、3、2、4、1];说真的=(10、20);
例子:要指定控制变量的和为1,请给出约束条件Aeq = 1 (1, N)
和说真的= 1
.
数据类型:双
说真的
- - - - - -线性等式约束线性等式约束,指定为实向量。说真的
是一个我
元素向量相关的Aeq
矩阵。如果你通过说真的
作为行向量,求解器内部转换说真的
到列向量说真的(:)
.
说真的
编码我
线性等式
Aeq * x =说真的
,
在哪里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 (1, N)
和说真的= 1
.
数据类型:双
磅
- - - - - -下界[]
(默认)|实向量或数组下界,指定为实向量或双精度数组。磅
表示在元素方面的下界磅
≤x
≤乌兰巴托
.
在内部,paretosearch
将一个数组磅
的向量磅(:)
.
例子:磅=[0;无穷;4)
意味着x(1)≥0
,x(3)≥4
.
数据类型:双
乌兰巴托
- - - - - -上界[]
(默认)|实向量或数组上界,指定为实向量或双精度数组。乌兰巴托
表示中元素的上界磅
≤x
≤乌兰巴托
.
在内部,paretosearch
将一个数组乌兰巴托
的向量乌兰巴托(:)
.
例子:乌兰巴托= (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
不支持非线性等式约金宝app束。
如果你设置UseVectorized
选项真正的
,然后nonlcon
接受大小矩阵n
——- - - - - -据nvar
,其中矩阵表示n
个人。nonlcon
返回一个size的矩阵n
——- - - - - -mc
在第一个参数中mc
为非线性不等式约束的个数。看到向适应度函数向量化.
例如,x = paretosearch(据nvar @myfun, A、b Aeq,说真的,磅,乌兰巴托,@mycon)
,在那里mycon
MATLAB是一种®功能如:
函数[c,ceq] = mycon(x)%在x处计算非线性不等式ceq =[] %在x处没有非线性不等式
有关更多信息,请参见非线性约束.
数据类型:字符
|function_handle
|字符串
选项
- - - - - -优化选项optimoptions
|结构的输出,指定为优化选项optimoptions
或者作为一个结构。
optimoptions
中列出的选项斜体;看到Options隐藏的选项.
{}
表示默认值。请参阅模式搜索选项.
选项patternsearch
和paretosearch
选项 | 描述 | 值 |
---|---|---|
|
公差约束。 对于期权结构,请使用 |
积极的标量| |
|
显示水平。 |
“关闭” |“通路” |“诊断” |{'最后'} |
|
目标函数求值的最大次数。 对于期权结构,请使用 |
正整数| |
|
最大迭代次数。 对于期权结构,请使用 |
正整数| |
|
允许优化的总时间(以秒为单位)。 对于期权结构,请使用 |
积极的标量| |
|
网目尺寸公差。 对于期权结构,请使用 |
积极的标量| |
|
优化函数在每次迭代时调用的函数。指定为函数句柄或函数句柄的单元格数组。 对于期权结构,请使用 |
函数句柄或函数句柄的单元数组| |
|
模式搜索的输出图。指定为内置绘图函数、函数句柄或内置绘图函数或函数句柄名称的单元数组的名称。 对于期权结构,请使用 |
为 为 |
|
在模式搜索中使用的轮询策略。 |
为 |
|
并行计算目标函数和非线性约束函数。看到矢量化和并行选项和如何在全局优化工具箱中使用并行处理. 请注意 必须设置 从R2019a开始,当你设置 |
|
|
指定函数是否向量化。看到矢量化和并行选项和向量化目标函数和约束函数. 请注意 必须设置 对于期权结构,请使用 |
|
选项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
乌兰巴托
-的上界x
nonlcon
-非线性约束函数
解算器
- - - - - -“paretosearch”
选项
-使用optimoptions
rngstate
—可选字段,重置随机数生成器的状态
请注意
各个领域中问题
是必需的,除了rngstate
,这是可选的。
数据类型:结构体
x
——帕累托分米
——- - - - - -据nvar
数组帕累托点,返回为米
——- - - - - -据nvar
数组,米
是帕累托前面的点数。每一行的x
代表帕累托前面的一点。
fval
-帕累托前的函数值米
——- - - - - -nf
数组函数值的帕累托前端,返回为米
——- - - - - -nf
数组中。米
是帕累托前面的点数,然后呢nf
为适应度函数的个数。每一行的fval
表示函数在一个帕累托点处的值x
.
exitflag
- - -原因paretosearch
停止原因paretosearch
已停止,作为该表中的一个整数值返回。
出口标志 | 停止条件 |
---|---|
1 |
满足以下条件之一。
|
0 |
迭代次数超过选项。麦克斯特ations ,或函数求值次数超过选项。米axFunctionEvaluations . |
-1 |
优化被输出函数或绘图函数停止。 |
-2 |
求解器不能找到满足所有约束条件的点。 |
-5 |
优化时间超过选项。MaxTime . |
输出
—优化过程信息关于优化过程的信息,作为带有以下字段的结构返回:
迭代
—总迭代次数。
funccount
—函数求值的总数。
体积
-功能空间中由帕累托点组成的集合的超体积。看到帕累托搜索算法定义.
averagedistance
-函数空间中帕累托点的平均距离度量。看到帕累托搜索算法定义.
传播
-帕累托点的平均传播度量。看到帕累托搜索算法定义.
maxconstraint
—最大约束违背(如果有)。
消息
—终止算法的原因。
rngstate
-在算法开始之前,MATLAB随机数生成器的状态。中的值可以使用rngstate
当您使用随机轮询方法时,例如“MADSPositiveBasis2N”
或者当你使用默认的拟随机方法创建初始总体时。看到复制的结果,其中讨论了相同的技术遗传算法
.
残差
约束残差在x
约束残差在x
,作为带有这些字段的结构返回(表后有字段大小术语和条目的术语表)。
字段名 | 字段长度 | 条目 |
---|---|---|
较低的 |
米 ——- - - - - -据nvar |
磅 - - - - - -x |
上 |
米 ——- - - - - -据nvar |
x - - - - - -乌兰巴托 |
ineqlin |
米 ——- - - - - -ncon |
* x - b |
eqlin |
米 ——- - - - - -ncon |
| | Aeq * x - b |
ineqnonlin |
米 ——- - - - - -ncon |
c (x) |
米
-返回点数x
在帕累托前面
据nvar
—控制变量个数
ncon
—相关类型的约束数(如:的行数)一个
或返回的非线性等式的个数)
c (x)
—非线性约束函数的数值
paretosearch
使用模式搜索来搜索帕累托前端的点。有关详细信息,请参见paretosearch算法.
的优化活动编辑器任务为paretosearch
.
要并行运行,请设置“UseParallel”
选项真正的
.
选择= optimoptions ('
solvername
”、“UseParallel’,真的)
有关更多信息,请参见如何在全局优化工具箱中使用并行处理.
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。