查找帕累托设定点
在二维变量的双目标函数的Pareto前寻找点。
有趣= @ (x)[规范(x -[1, 2]) ^ 2;规范(x + (2,1)) ^ 2];rng默认的%用于重现x = paretosearch(有趣,2);
帕累托组发现,满足的约束。优化完成,因为在帕累托集体积的相对变化小于“options.ParetoSetChangeTolerance”和约束“options.ConstraintTolerance”内满意。
绘制解决方案的散点图。
情节(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);
帕累托组发现,满足的约束。优化完成,因为在帕累托集体积的相对变化小于“options.ParetoSetChangeTolerance”和约束“options.ConstraintTolerance”内满意。
绘制解决方案的散点图。
情节(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,负);%×(1)> = 0UB = [天道酬勤,1];%×(2)<= 1rng默认的%用于重现X = paretosearch(乐趣,2,[],[],[],[],LB,UB);
帕累托组发现,满足的约束。优化完成,因为在帕累托集体积的相对变化小于“options.ParetoSetChangeTolerance”和约束“options.ConstraintTolerance”内满意。
绘制解决方案的散点图。
情节(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®路径上的一个文件。
为了更好地查看非线性约束的效果,set选项使用较大的Pareto集大小。
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,[],[],[],[],LB,UB,@ circlecons,选项);
帕累托组发现,满足的约束。优化完成,因为在帕累托集体积的相对变化小于“options.ParetoSetChangeTolerance”和约束“options.ConstraintTolerance”内满意。
绘制解决方案的散点图。包括圆形约束边界的情节。
图绘制(x (: 1), (:, 2),'K *')包含(“x”(1))ylabel (“x”(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[]、[][],[],磅,乌兰巴托,[],选项);
帕累托组发现,满足的约束。优化完成,因为在帕累托集体积的相对变化小于“options.ParetoSetChangeTolerance”和约束“options.ConstraintTolerance”内满意。
将溶液看起来像半径18四分之一圆弧,其可以被示出为解析解。
通过调用得到函数空间和参数空间中的Pareto前沿paretosearch
与X
和FVAL
输出。用于在函数空间和参数空间中绘制Pareto集的Set选项。
有趣= @ (x)[规范(x -[1, 2]) ^ 2;规范(x + (2,1)) ^ 2];磅= (4,4);乌兰巴托=磅;选项= optimoptions(“paretosearch”,“PlotFcn”,{“psplotparetof”“psplotparetox”});rng默认的%用于重现[x, fval] = paretosearch(乐趣2[]、[][],[],磅,乌兰巴托,[],选项);
帕累托组发现,满足的约束。优化完成,因为在帕累托集体积的相对变化小于“options.ParetoSetChangeTolerance”和约束“options.ConstraintTolerance”内满意。
在目标函数空间中的解析解是半径18。在参数空间的四分之一圆弧,分析溶液是一条直线从[-2,-1]
来[1,2]
。解点接近解析曲线。
设置选项监测帕累托组解决方案的过程。另外,获得从多个输出paretosearch
使您能够了解解决方案的过程。
选项= optimoptions(“paretosearch”,'显示','ITER',…“PlotFcn”,{“psplotparetof”“psplotparetox”});有趣= @ (x)[规范(x -[1, 2]) ^ 2;规范(x + (2,1)) ^ 2];磅= (4,4);乌兰巴托=磅;rng默认的%用于重现[X,FVAL,exitflag,输出] = paretosearch(乐趣,2,[],[],[],[],LB,UB,[],选项);
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 Pareto set发现满足约束条件。优化完成,因为在帕累托集体积的相对变化小于“options.ParetoSetChangeTolerance”和约束“options.ConstraintTolerance”内满意。
检查额外的输出。
fprintf中(“退出旗% d。\ n”exitflag)
出口标志1。
disp(输出)
迭代:10 funccount: 2189 volume: 304.4256平均距离:0.0215 spread: 0.1742 maxconstraint: 0 message:‘Pareto set found that the constraints. .' rngstate: [1x1 struct]
获取并检查Pareto前沿约束残值。创建具有线性不等式约束问题总和(X)<= -1/2
和非线性不等式约束规范(x) ^ 2 < = 1.2
。为了提高精度,在帕累托前沿,和使用200点ParetoSetChangeTolerance
的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'1 e -…“PlotFcn”,{“psplotparetof”“psplotparetox”},'ParetoSetSize',200);
调用paretosearch
使用所有输出。
[x, fval exitflag、输出残差)= paretosearch(乐趣2 A、b[],[],磅,乌兰巴托,nonlcon,选项);
帕累托组发现,满足的约束。优化完成,因为在帕累托集体积的相对变化小于“options.ParetoSetChangeTolerance”和约束“options.ConstraintTolerance”内满意。
与无约束集相比,不等式约束减少了Pareto集的大小。检查返回的残差。
fprintf中(“最大线性不等式约束残差%F。\ N”马克斯(residuals.ineqlin))
线性不等式约束残余最大值为0.000000。
fprintf中('最大非线性不等式约束残差为%f.\n',MAX(residuals.ineqnonlin))
最大非线性不等式约束残差-0.000152。
返回的最大残差为负值,表示所有返回点都是可行的。返回的最大残差接近于零,这意味着对于某些点,每个约束都是活动的。
功能[c,ceq] = circlecons(x) ceq = [];c =范数(x)^2 - 1。2;结束
据nvar
-变量数一个
-线性不等式约束线性不等式约束,表示为实矩阵。一个
是一个中号
-通过-据nvar
矩阵,其中中号
是不平等的数量。
一个
编码中号
线性不等式
A * X <= b的
,
在哪里X
的列向量据nvar
变量x (:)
,b
是与列矢量中号
元素。
例如,指定
X1+ 2X2≤10
3X1+ 4X2≤20
五X1+ 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 <= b的
,
在哪里X
的列向量ñ
变量x (:)
,一个
是一个矩阵的大小中号
-通过-ñ
。
例如,指定
X1+ 2X2≤10
3X1+ 4X2≤20
五X1+ 6X2≤30日
给这些制约因素:
= [1,2,3,4,5,6);b = (10、20、30);
例:要指定控制变量总和为1或更小,得到的约束一个= 1 (1,N)
和B = 1
。
数据类型:双
AEQ
-线性等式约束线性等式约束,指定为实矩阵。AEQ
是一个我
-通过-据nvar
矩阵,其中我
是等式的个数。
AEQ
编码我
线性等式
AEQ * X = BEQ
,
在哪里X
的列向量ñ
变量x (:)
,BEQ
是与列矢量我
元素。
例如,指定
X1+ 2X2+ 3X3= 10
2X1+ 4X2+X3= 20,
给这些制约因素:
AEQ = [1,2,3; 2,4,1];BEQ = [10; 20]。
例:要指定控制变量sum为1,请给出约束条件AEQ =酮(1,N)
和BEQ = 1
。
数据类型:双
BEQ
-线性等式约束线性等式约束,指定为实向量。BEQ
是一个我
-与。相关的元素向量AEQ
矩阵。如果您通过BEQ
作为一个行向量,解算器在内部转换BEQ
到列向量说真的(:)
。
BEQ
编码我
线性等式
AEQ * X = BEQ
,
在哪里X
的列向量ñ
变量x (:)
,AEQ
是一个矩阵的大小微地震
-通过-ñ
。
例如,指定
X1+ 2X2+ 3X3= 10
2X1+ 4X2+X3= 20,
给这些制约因素:
AEQ = [1,2,3; 2,4,1];BEQ = [10; 20]。
例:要指定控制变量sum为1,请给出约束条件AEQ =酮(1,N)
和BEQ = 1
。
数据类型:双
磅
-下界[]
(默认)|实向量或阵列下界,指定为实向量或双精度数组。磅
表示下界逐元素在磅
≤X
≤UB
。
在内部,paretosearch
转换的阵列磅
到向量磅(:)
。
例:磅=[0;无穷;4)
手段x (1)≥0
,X(3)≥4
。
数据类型:双
UB
-上界[]
(默认)|实向量或阵列上限,指定为实向量或双打的阵列。UB
表示上限逐元素在磅
≤X
≤UB
。
在内部,paretosearch
转换的阵列UB
到向量UB(:)
。
例:UB = [Inf文件; 4; 10]
手段x (2)≤4
,X(3)≤10
。
数据类型:双
nonlcon
-非线性约束非线性约束,指定为函数句柄或函数名。nonlcon
是一个接受行向量的函数吗X
和返回两个行向量,c (x)
和CEQ(x)的
。
c (x)
非线性不等式约束的行向量为X
。该paretosearch
功能试图满足c (x) < = 0
对于所有条目C
。
CEQ(x)的
必须返回[]
目前,因为paretosearch
不支持非线性等式约万博1manbetx束。
如果你设置UseVectorized
选项真正的
, 然后nonlcon
接受一个大小矩阵ñ
-通过-据nvar
,其中矩阵表示ñ
个人。nonlcon
返回一个大小矩阵ñ
-通过-mc
在第一个参数中mc
是非线性不等式约束的数目。看到矢量化的健身功能。
例如,X = paretosearch(@ myfun,nvars,A,B,AEQ,BEQ,LB,UB,@ mycon)
,在那里mycon
是MATLAB®功能,诸如以下:
功能并[c,CEQ] = mycon(X)C = ...%计算非线性不等式x处。CEQ = []%未非线性x处等式。
有关更多信息,请参见非线性约束(优化工具箱)。
数据类型:烧焦
|function_handle
|字符串
选项
-优化选项optimoptions
|结构优化选项,指定的输出optimoptions
或者作为一个结构。
optimoptions
皮张的选项中列出斜体;看到选项optimoptions隐藏。
{}
表示默认值。见选项细节模式搜索选项。
对于选项patternsearch
和paretosearch
选项 | 描述 | 值 |
---|---|---|
|
公差限制。 对于选项结构,请使用 |
积极的标量| |
|
显示器的水平。 |
“关” |'ITER' |'诊断' |{'最后'} |
|
目标函数评估的最大数目。 对于选项结构,请使用 |
正整数| |
|
最大迭代次数。 对于选项结构,请使用 |
正整数| |
|
允许优化的总时间(以秒为单位)。 对于选项结构,请使用 |
积极的标量| |
|
网目尺寸公差 对于选项结构,请使用 |
积极的标量| |
|
功能优化的函数调用在每次迭代。指定为功能句柄或函数处理的一个单元阵列。 对于选项结构,请使用 |
功能句柄或功能手柄单元阵列| |
|
模式搜索的输出图。将其指定为内置plot函数、函数句柄或内置plot函数或函数句柄的单元数组的名称。 对于选项结构,请使用 |
对于 对于 |
|
在模式搜索中使用轮询策略。 |
对于 |
|
并行计算目标函数和非线性约束函数。看到向量化和并行选项(用户功能评价)和如何使用全局优化工具箱并行处理。 |
|
|
指定是否函数量化。看到向量化和并行选项(用户功能评价)和矢量化目标和约束功能。 对于选项结构,请使用 |
|
对于选项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
-线性等式约束的矩阵
BEQ
-线性等式约束的向量
磅
- 下界X
UB
-上限X
nonlcon
- 非线性约束函数
解算器
-“paretosearch”
选项
-以optimoptions
rngstate
- 可选字段重置随机数生成器的状态
在各领域问题
都是必需的,除了rngstate
,这是可选的。
数据类型:结构
X
- 帕累托点米
-通过-据nvar
排列帕累托点,返回一个米
-通过-据nvar
数组,米
是在帕累托前沿点的数量。每行X
表示Pareto前沿上的一个点。
FVAL
- Pareto的前面函数值米
-通过-nf
排列函数值在Pareto前面,作为参数返回米
-通过-nf
数组中。米
是Pareto front上的点数,和nf
是适应度函数的个数。每行FVAL
表示在一个Pareto点处的函数值X
。
exitflag
- - -原因paretosearch
停止原因paretosearch
已停止,作为此表中的一个整数值返回。
出口标志 | 停止条件 |
---|---|
1 |
一下列条件得到满足。
|
0 |
迭代次数超过options.MaxIterations ,或函数计算的次数超过options.MaxFunctionEvaluations 。 |
1 |
优化是通过输出函数或绘图功能停止。 |
2 |
求解器无法找到满足所有约束的一个点。 |
5 |
优化时间超过options.MaxTime 。 |
输出
- 关于优化过程的信息关于优化过程的信息,以结构形式返回,包含以下字段:
迭代
- 迭代的总数。
funccount
-功能评估的总数。
体积
- 从在功能空间帕累托点形成的组的超体积。看到paretosearch算法的定义。
averagedistance
- 帕累托的平均距离测量功能在空间中的点。看到paretosearch算法的定义。
传播
- 帕累托点的平均利差措施。看到paretosearch算法的定义。
maxconstraint
-最大约束冲突,如果有的话。
信息
- 之所以算法终止。
rngstate
- 就在算法开始前的MATLAB随机数生成器的状态。您可以使用值rngstate
若要在使用诸如此类的随机轮询方法时重现输出,请执行以下步骤'MADSPositiveBasis2N'
或者当您使用创建初始人口的默认准随机方法。看到复制的结果,其中讨论了相同的技术遗传算法
。
paretosearch
使用模式搜索来搜索帕累托前点。有关详细信息,请参阅paretosearch算法。
并行运行,设置'UseParallel'
选项真正的
。
选项= optimoptions(”
solvername
”、“UseParallel’,真的)
有关更多信息,请参见如何使用全局优化工具箱并行处理。
您单击对应于该MATLAB命令的链接:
通过在MATLAB命令窗口中输入该命令来运行它。Web浏览器不支持MATLAB命令。万博1manbetx
您还可以选择从下面的列表中的网站:
选择最佳的网站性能的中国网站(在中国或英文)。其他MathWorks的国家网站都没有从您的位置访问进行了优化。