在帕累托集合中找到点
在帕累托前面查找二维变量的双目标函数的帕圈索前面。
有趣= @ (x)[规范(x -[1, 2]) ^ 2;规范(x + (2,1)) ^ 2];RNG.默认%的再现性x = paretosearch(fun,2);
找到满足约束条件的帕累托集合。优化完成是因为相对变化量的帕累托集小于‘选项’。paretosetchangtolerance '和约束被满足在'options. constraintolerance '之内。
用散点图表示解。
plot(x(:,1),x(:,2),“m *”)xlabel('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);
找到满足约束条件的帕累托集合。优化完成是因为相对变化量的帕累托集小于‘选项’。paretosetchangtolerance '和约束被满足在'options. constraintolerance '之内。
用散点图表示解。
plot(x(:,1),x(:,2),“m *”)xlabel('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];lb = [0,-inf];%x(1)>> = 0乌兰巴托=[正无穷,1];%x(2)<= 1RNG.默认%的再现性x = paretosearch(有趣,2 ,[],[],[],[], 磅,乌兰巴托);
找到满足约束条件的帕累托集合。优化完成是因为相对变化量的帕累托集小于‘选项’。paretosetchangtolerance '和约束被满足在'options. constraintolerance '之内。
用散点图表示解。
plot(x(:,1),x(:,2),“m *”)xlabel('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];LB = [-1.1,-1.1];UB = [1.1,1.1];选择= optimoptions ('paretosearch',“ParetoSetSize”, 200);x = paretosearch(有趣,2 ,[],[],[],[], 磅,乌兰巴托,@circlecons选项);
找到满足约束条件的帕累托集合。优化完成是因为相对变化量的帕累托集小于‘选项’。paretosetchangtolerance '和约束被满足在'options. constraintolerance '之内。
用散点图表示解。包括一个圆形约束边界的绘图。
图绘图(x(:,1),x(:,2),“k *’)xlabel('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(fun,2,[],[],[],[],LB,UB,[],选项);
找到满足约束条件的帕累托集合。优化完成是因为相对变化量的帕累托集小于‘选项’。paretosetchangtolerance '和约束被满足在'options. constraintolerance '之内。
解看起来像一个半径为18的四分之一圆弧,可以证明它是解析解。
通过致电获取函数空间和参数空间的帕圈索前面paretosearch
与这两者都有x
和fval.
输出。设置选项以绘制函数空间和参数空间中的帕匹索匹集。
有趣= @ (x)[规范(x -[1, 2]) ^ 2;规范(x + (2,1)) ^ 2];磅= (4,4);乌兰巴托=磅;选择= optimoptions ('paretosearch','plotfcn',{'psplotparetof''psplotparetox'});RNG.默认%的再现性[x,fval] = paretosearch(fun,2,[],[],[],[],LB,UB,[],选项);
找到满足约束条件的帕累托集合。优化完成是因为相对变化量的帕累托集小于‘选项’。paretosetchangtolerance '和约束被满足在'options. constraintolerance '之内。
目标函数空间中的解析解是半径为18的四分之一圆弧。在参数空间中,解析解是一条直线[-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',出口)
退出标志1。
DISP(输出)
迭代:10 Funccount:2189卷:304.4256平均值:0.0215传播:0.1742 MaxConstraint:0消息:'帕累托集满足约束。...'rngstate:[1x1 struct]
获得并检验帕累托前约束残差。用线性不等式约束产生一个问题总和(x) < = 1/2
和非线性不等式约束常态(x)^ 2 <= 1.2
.为了提高精度,使用200点在帕累托前面,和一个帕奇塞格兰德经理
的1E-7
,并给出自然界限-1.2 <= x(i)<= 1.2
.
非线性约束函数出现在这个示例的最后,如果您将这个示例作为一个活动脚本运行,它就会工作。若要运行此示例,请将非线性约束函数作为一个文件包含在MATLAB®路径上。
有趣= @ (x)[规范(x -[1, 2]) ^ 2;规范(x + (2,1)) ^ 2];一个= [1];b = -1/2;LB = [-1.2,-1.2];乌兰巴托=磅;nonlcon = @circlecons;RNG.默认%的再现性选择= optimoptions ('paretosearch',“ParetoSetChangeTolerance”,1e-7,......'plotfcn',{'psplotparetof''psplotparetox'},“ParetoSetSize”, 200);
称呼paretosearch
使用所有输出。
[x,fval,出口,输出,残差] = paretosearch(fun,2,a,b,[],[],lb,Ub,nonlcon,选项);
找到满足约束条件的帕累托集合。优化完成是因为相对变化量的帕累托集小于‘选项’。paretosetchangtolerance '和约束被满足在'options. constraintolerance '之内。
与不受约束的集合相比,不等式约束减小了帕累托集的大小。检查退回的残差。
流('最大线性不等式约束残差为%f.\n',Max(Residuals.ineqlin))
最大线性不等式约束残余为0.000000。
流('最大非线性不等式约束残余是%f。\ n'马克斯(residuals.ineqnonlin))
最大非线性不等式约束残差为-0.002619。
最大返回的残差是否定的,这意味着所有返回的点都是可行的。最大返回的残差接近于零,这意味着每个约束对于某些点都处于活动状态。
功能[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];
例子:要指定控制变量之和为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];
例子:要指定控制变量之和为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 = ONE(1,N)
和说真的= 1
.
数据类型:双倍的
说真的
- - - - - -线性平等约束线性平等约束,指定为真正的矢量。说真的
是一个我
- 与...相关的矢量Aeq
矩阵。如果你通过说真的
作为一排矢量,求解器内部转换说真的
到列向量Beq(:)
.
说真的
编码我
线性等式
aeq * x = beq
,
在哪里x
是栏矢量N
变量X(:)
, 和Aeq
是大小的矩阵MEQ.
——- - - - - -N
.
例如,要指定
x1+ 2x2+ 3x3.= 10
2x1+ 4x2+x3.= 20,
给这些约束:
Aeq =[1、2、3、2、4、1];说真的=(10、20);
例子:要指定控制变量总和为1,请给出约束AEQ = ONE(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
不支持非线性等式约金宝app束。
如果你设置了使用vectorized
选项真的
,然后nonlcon
接受一个大小的矩阵n
——- - - - - -NVARS.
,矩阵代表的地方n
个人。nonlcon
返回大小的矩阵n
——- - - - - -马克
在第一个论点,在哪里马克
是非线性不等式约束的数量。看到向量化适应度函数.
例如,x = paretosearch(据nvar @myfun, A、b Aeq,说真的,磅,乌兰巴托,@mycon)
, 在哪里Mycon.
MATLAB是一种®功能如下:
函数[c,ceq] = mycon(x) c =…计算x处的非线性不等式ceq = []
有关更多信息,请参阅非线性约束.
数据类型:字符
|function_handle
|细绳
选项
- - - - - -优化选项optimoptions
|结构体优化选项,指定为输出optimoptions
或作为一个结构。
optimoptions
中列出的选项被隐藏斜斜体;看隐藏最佳选项的选项.
{}
表示默认值。请参阅选项详细信息模式搜索选项.
选择Patternsearch.
和paretosearch
选项 | 描述 | 值 |
---|---|---|
|
对约束的公差。 对于选项结构,使用 |
正标量| |
|
显示水平。 |
'离开' |“通路” |“诊断” |{'最终的'} |
|
最大客观函数评估数。 对于选项结构,使用 |
正整数| |
|
最大迭代次数。 对于选项结构,使用 |
正整数| |
|
优化允许的总时间(以秒为单位)。 对于选项结构,使用 |
正标量| |
|
对网格尺寸的宽度。 对于选项结构,使用 |
正标量| |
|
函数在每次迭代时调用优化函数。指定为函数句柄或功能句柄阵列。 对于选项结构,使用 |
功能手柄或功能手柄数组| |
|
从模式搜索的输出绘图。指定为内置绘图函数,函数句柄或内置绘图函数或功能句柄名称的小区数组的名称。 对于选项结构,使用 |
为了 为了 |
|
模式搜索中使用的轮询策略。 |
为了 |
|
计算目标和非线性约束函数并行。看到矢量化和并行选项和如何在全局优化工具箱中使用并行处理. 请注意 必须设置 从R2019A开始,当你设置的时候 |
|
|
指定函数是否向量化。看到矢量化和并行选项和向量化目标和约束函数. 请注意 必须设置 对于选项结构,使用 |
|
选择paretosearch
只有
选项 | 描述 | 值 |
---|---|---|
|
初始点
|
矩阵与 |
|
轮询模式的最小分数。 | 标量从0到1 | |
|
帕累托集中的点数。 | 正整数| |
|
当迭代窗口的停止测量的相对变化小于或等于时,求解器停止
看到帕累诗歌算法的定义. 当任何适用度量的相对变化小于时,求解器停止 请注意 环境 |
正标量| |
选择Patternsearch.
只有
选项 | 描述 | 值 |
---|---|---|
缓存 | 和 请注意
|
|
缓存 | 历史的大小。 |
正标量| |
CacheTol | 从当前网格点到历史上任何点的最大距离为 |
正标量| |
functiontolerance. |
对功能的宽容。如果函数值的变化小于,则迭代停止 对于选项结构,使用 |
正标量| |
initialmeshsize. |
算法的初始网格尺寸。看到模式如何搜索轮询工作. |
正标量| |
InitialPenalty | 惩罚参数的初始值。看到非线性约束求解器算法. |
正标量| |
MaxMeshSize | 轮询或搜索步骤中使用的最大网格尺寸。看到模式如何搜索轮询工作. |
正标量| |
MeshContractionFactor |
网格收缩因子不成功迭代。 对于选项结构,使用 |
正标量| |
meshexpansionfactor. |
成功迭代的网格膨胀因子。 对于选项结构,使用 |
正标量| |
meshotate. | 在声明一个点为最优之前旋转模式。看到网格选项. |
|
PenaltyFactor | 点球更新参数。看到非线性约束求解器算法. |
正标量| |
PlotInterval | 指定每隔一段时间调用plot函数。 |
正整数| |
pollordoralgorithm. |
模式搜索中轮询方向的顺序。 对于选项结构,使用 |
|
ScaleMesh |
自动变量缩放。 对于选项结构,使用 |
|
searchfcn. |
模式搜索中使用的搜索类型。指定为名称或函数句柄。 对于选项结构,使用 |
|
StepTolerance. |
变量的容忍度。如果位置的变化和网格大小都小于,迭代就会停止 对于选项结构,使用 |
正标量| |
托尔布宁 | 绑定公差。看到约束参数. |
正标量| |
UseCompletePoll |
围绕当前点完成投票。看到模式如何搜索轮询工作. 对于选项结构,使用 |
|
UseCompleteSearch |
在搜索方法是轮询方法时,完全搜索当前点。看到搜索和轮询. 对于选项结构,使用 |
|
例子:选项= Optimoptions('paretosearch','显示','none','deverepareliall',true)
问题
- - - - - -问题结构问题结构,指定为具有以下字段的结构:
客观的
——目标函数
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 |
优化时间超过选项。MaxTime . |
输出
- 有关优化过程的信息有关优化过程的信息,作为具有这些字段的结构返回:
残差
- 约束残余物x
约束残差at.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
使用模式搜索搜索帕累托正面上的点。有关详细信息,请参见帕累诗歌算法.
的优化Live Editor任务提供可视界面paretosearch
.
要并行运行,请设置“UseParallel”
选项真的
.
选择= optimoptions ('
solvername.
','使用adplallel',true)
有关更多信息,请参阅如何在全局优化工具箱中使用并行处理.
您点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入它来运行命令。Web浏览器不支持MATLAB命令。金宝app
你也可以从以下列表中选择一个网站:
请选择表现最佳的中国网站(中文或英文)。MathWorks的其他国家网站并没有针对您所在位置的访问进行优化。