surrogateopt
语法
描述
surrogateopt
是一个全球性的解决耗时的目标函数。
surrogateopt
试图解决问题的形式
实值的解算器搜索全球最小目标函数在多个维度,界限,可选的线性约束,可选的整数约束,以及可选的非线性不等式约束。surrogateopt
最适合目标函数,需要很长时间才能评估。目标函数可以非光滑。解算器需要有限的边界上所有的变量。解算器可以维持一个检查点文件,使康复崩溃或部分执行,或停止条件优化后继续会议。目标函数f(x)可以是空的([]
),在这种情况下surrogateopt
试图找到一个满足所有的约束。
持续运行的优化状态保存检查点文件。看到使用检查点文件。x
= surrogateopt (checkpointFile
)
持续运行的优化状态保存检查点文件,和替换选项x
= surrogateopt (checkpointFile
,选择
)checkpointFile
与那些在选择
。看到检查点文件。
例子
寻找全球最低
寻找最低的six-hump骆驼背函数在该地区-2.1 < = x (i) < = 2.1
。这个函数有两个全局最小点的目标函数值-1.0316284……
用更高的目标函数值和四个局部最小值。
rng默认的%的再现性objconstr = @ (x) (4 * x (: 1)。^ 2 - 2.1 * x (: 1)。^ 4 + x (: 1)。^ 6/3…+ x (: 1)。* x (:, 2), 4 * x (:, 2)。^ 2 + 4 * x (:, 2) ^ 4);磅= [-2.1,-2.1];乌兰巴托=磅;x = surrogateopt (objconstr磅,乌兰巴托)
surrogateopt停止,因为它超过了设定的评价函数极限“options.MaxFunctionEvaluations”。
x =1×20.0893 - -0.7130
解决非线性约束问题
找到最低。海涅的函数
非线性约束条件的解决方案在于磁盘半径的1/3 (1/3,1/3):
。
为此,objconstr编写一个函数(x)
返回的价值。在结构领域的功能Fval
,并返回表单中的非线性约束值
在结构领域Ineq
。
类型objconstr
函数f = objconstr f (x)。Fval= 100*(x(2) - x(1)^2)^2 + (1 - x(1))^2; f.Ineq = (x(1)-1/3)^2 + (x(2)-1/3)^2 - (1/3)^2;
调用surrogateopt
使用0的下界和上界每个组件的2/3。
磅= (0,0);乌兰巴托= (2/3,2/3);[x, fval exitflag] = surrogateopt (@objconstr磅,乌兰巴托)
surrogateopt停止,因为它超过了设定的评价函数极限“options.MaxFunctionEvaluations”。
x =1×20.6544 - 0.4280
fval = 0.1194
exitflag = 0
检查值非线性约束的解决方案。
disp (objconstr (x) .Ineq)
9.3778 e-04
约束函数值是接近于零,这表明约束条件是积极的解决方案。
解决混合整数问题
找到最低的ps_example
一个二维变量函数x
的第一个组件被限制为整数值,5和5之间的所有组件。
intcon = 1;rng默认的%的再现性objconstr = @ps_example;磅= (5,5);乌兰巴托= (5,5);x = surrogateopt (objconstr磅,乌兰巴托,intcon)
surrogateopt停止,因为它超过了设定的评价函数极限“options.MaxFunctionEvaluations”。
x =1×2-5.0000 - 0.0006
代理优化使用默认的选项
最小化six-hump骆驼背函数在该地区-2.1 < = x (i) < = 2.1
。这个函数有两个全局最小点的目标函数值-1.0316284……
用更高的目标函数值和四个局部最小值。
系统地搜索区域,使用常规的网格的起点。集120年的最大数量评估函数。使用“surrogateoptplot”
图的功能。了解“surrogateoptplot”
情节,看到解释surrogateoptplot。
rng默认的%的再现性objconstr = @ (x) (4 * x (: 1)。^ 2 - 2.1 * x (: 1)。^ 4 + x (: 1)。^ 6/3…+ x (: 1)。* x (:, 2), 4 * x (:, 2)。^ 2 + 4 * x (:, 2) ^ 4);磅= [-2.1,-2.1];乌兰巴托=磅;[xpt材料,Ypts] = meshgrid(三3);startpts = [xpt材料(:),Ypts (:));选择= optimoptions (“surrogateopt”,“PlotFcn”,“surrogateoptplot”,…“InitialPoints”startpts,“MaxFunctionEvaluations”,120);x = surrogateopt (objconstr、磅、乌兰巴托、期权)
surrogateopt停止,因为它超过了设定的评价函数极限“options.MaxFunctionEvaluations”。
x =1×20.0900 - -0.7123
线性约束条件surrogateopt
非线性目标函数最小化线性不等式约束。200年最小化函数评估。
objconstr = @multirosenbrock;据nvar = 6;磅= 2 *的(据nvar, 1);乌兰巴托=磅;intcon = [];据nvar = 1 (1);b = 3;Aeq = [];说真的= [];选择= optimoptions (“surrogateopt”,“MaxFunctionEvaluations”,200);[溶胶,fval exitflag、输出]=…intcon surrogateopt (objconstr磅,乌兰巴托,A, b, Aeq,说真的,选项)
surrogateopt停止,因为它超过了设定的评价函数极限“options.MaxFunctionEvaluations”。
索尔=1×60.0159 0.0061 0.0289 0.0046 0.0207 0.0209
fval = 2.9173
exitflag = 0
输出=结构体字段:elapsedtime: 44.3171 funccount: 200 constrviolation: 0 ineq: [1 x0双]rngstate: [1 x1 struct]信息:“surrogateopt停止,因为它超过了设定的评价函数极限……”
代理问题结构的优化
创建一个问题结构代表six-hump骆驼背函数在该地区-2.1 < = x (i) < = 2.1
。集120年的最大数量评估函数。
rng默认的%的再现性objconstr = @ (x) (4 * x (: 1)。^ 2 - 2.1 * x (: 1)。^ 4 + x (: 1)。^ 6/3…+ x (: 1)。* x (:, 2), 4 * x (:, 2)。^ 2 + 4 * x (:, 2) ^ 4);选择= optimoptions (“surrogateopt”,“MaxFunctionEvaluations”,120);问题=结构(“目标”objconstr,…“磅”[-2.1,-2.1],…乌兰巴托的[2.1,2.1],…“选项”选项,…“规划求解”,“surrogateopt”);x = surrogateopt(问题)
surrogateopt停止,因为它超过了设定的评价函数极限“options.MaxFunctionEvaluations”。
x =1×2-0.0892 - 0.7129
返回代理优化目标函数值
最小化six-hump骆驼背函数和返回最小点和目标函数值。抑制其他显示设置选项。
rng默认的%的再现性objconstr = @ (x) (4 * x (: 1)。^ 2 - 2.1 * x (: 1)。^ 4 + x (: 1)。^ 6/3…+ x (: 1)。* x (:, 2), 4 * x (:, 2)。^ 2 + 4 * x (:, 2) ^ 4);磅= [-2.1,-2.1];乌兰巴托=磅;选择= optimoptions (“surrogateopt”,“显示”,“关闭”,“PlotFcn”[]);[x, fval] = surrogateopt (objconstr、磅、乌兰巴托、期权)
x =1×20.0893 - -0.7130
fval = -1.0316
监控代理优化过程
监控代理优化过程要求surrogateopt
返回输出。使用“surrogateoptplot”
图的功能。了解“surrogateoptplot”
情节,看到解释surrogateoptplot。
rng默认的%的再现性objconstr = @ (x) (4 * x (: 1)。^ 2 - 2.1 * x (: 1)。^ 4 + x (: 1)。^ 6/3…+ x (: 1)。* x (:, 2), 4 * x (:, 2)。^ 2 + 4 * x (:, 2) ^ 4);磅= [-2.1,-2.1];乌兰巴托=磅;选择= optimoptions (“surrogateopt”,“PlotFcn”,“surrogateoptplot”);[x, fval exitflag、输出]= surrogateopt (objconstr、磅、乌兰巴托、期权)
surrogateopt停止,因为它超过了设定的评价函数极限“options.MaxFunctionEvaluations”。
x =1×20.0893 - -0.7130
fval = -1.0316
exitflag = 0
输出=结构体字段:elapsedtime: 43.4672 funccount: 200 constrviolation: 0 ineq: [1 x0双]rngstate: [1 x1 struct]信息:“surrogateopt停止,因为它超过了设定的评价函数极限……”
重新启动代理优化
订立代理优化快速通过设置一个小函数评估的最大数量。准备重新启动优化的可能性,要求所有的解算器输出。
rng默认的%的再现性objconstr = @ (x) (4 * x (: 1)。^ 2 - 2.1 * x (: 1)。^ 4 + x (: 1)。^ 6/3…+ x (: 1)。* x (:, 2), 4 * x (:, 2)。^ 2 + 4 * x (:, 2) ^ 4);磅= [-2.1,-2.1];乌兰巴托=磅;选择= optimoptions (“surrogateopt”,“MaxFunctionEvaluations”,20);[x, fval exitflag、输出试验]= surrogateopt (objconstr、磅、乌兰巴托、期权);
surrogateopt停止,因为它超过了设定的评价函数极限“options.MaxFunctionEvaluations”。
优化20功能评估,从以前开始评估点。
options.InitialPoints=试用; [x,fval,exitflag,output,trials] = surrogateopt(objconstr,lb,ub,options);
surrogateopt停止,因为它超过了设定的评价函数极限“options.MaxFunctionEvaluations”。
通过比较这些40块功能的评估寻找全球最低,你会发现重新启动代理优化不一样的规划求解连续运行。
重新启动代理从检查点文件优化
使重新启动代理优化由于事故或者其他原因,设置一个检查点文件的名字。
选择= optimoptions (“surrogateopt”,“CheckpointFile”,“checkfile.mat”);
创建一个函数优化问题和设置少量的评估。
rng默认的%的再现性objconstr = @ (x) (4 * x (: 1)。^ 2 - 2.1 * x (: 1)。^ 4 + x (: 1)。^ 6/3…+ x (: 1)。* x (:, 2), 4 * x (:, 2)。^ 2 + 4 * x (:, 2) ^ 4);磅= [-2.1,-2.1];乌兰巴托=磅;选择。米axFunctionEvaluations = 30; [x,fval,exitflag,output] = surrogateopt(objconstr,lb,ub,opts)
Surrogateopt停止,因为它超过了设定的评价函数极限“options.MaxFunctionEvaluations”。
x =1×20.0067 - -0.7343
fval = -0.9986
exitflag = 0
输出=结构体字段:elapsedtime: 28.7221 funccount: 30 constrviolation: 0 ineq:[1×0双]rngstate: [1×1 struct]消息:“Surrogateopt停止,因为它超过了函数评估限制由↵options.MaxFunctionEvaluations’。”
设置选项使用100函数评估(这意味着70多已经完成)并重新启动优化。
选择。米axFunctionEvaluations = 100; [x2,fval2,exitflag2,output2] = surrogateopt(“checkfile.mat”选择)
Surrogateopt停止,因为它超过了设定的评价函数极限“options.MaxFunctionEvaluations”。
x2 =1×20.0895 - -0.7130
fval2 = -1.0316
exitflag2 = 0
output2 =结构体字段:elapsedtime: 159.2411 funccount: 100 constrviolation: 0 ineq:[1×0双]rngstate: [1×1 struct]消息:“Surrogateopt停止,因为它超过了函数评估限制由↵options.MaxFunctionEvaluations’。”
输入参数
objconstr
- - - - - -目标函数和非线性约束
函数处理|函数名
目标函数和非线性约束,指定为一个函数处理或函数名。objconstr
接受一个参数x
,在那里x
通常是一个行向量。然而,当矢量化
选择是真正的
,x
是一个矩阵包含options.BatchUpdateInterval
行;每一行代表一个点来评估。objconstr
返回以下之一:
真正的标量
fval = objconstr (x)
。结构。如果结构包含的字段
Fval
,然后surrogateopt
试图最小化objconstr .Fval (x)
。如果结构包含的字段Ineq
,然后surrogateopt
尝试所有组件的字段负值的:objconstr .Ineq (x)<= 0
所有条目。objconstr (x)
必须包括的Fval
或Ineq
字段,或两者兼而有之。surrogateopt
忽略了其他领域。
当矢量化
选择是真正的
和BatchUpdateInterval
大于1,objconstr
作用于每一行x
并返回下列之一:
真正的向量
fval = objconstr (x)
。fval
是一个列向量options.BatchUpdateInterval
条目(或更少的最后一个函数评估时BatchUpdateInterval
不均匀分MaxFunctionEvaluations
)。结构向量条目。如果结构包含的字段
Fval
,然后surrogateopt
试图最小化objconstr .Fval (x)
,objconstr .Fval (x)
是一个向量的长度BatchUpdateInterval
(或更少)。如果结构包含的字段Ineq
,然后surrogateopt
尝试所有组件的字段负值的:objconstr .Ineq (x)<= 0
所有条目,objconstr .Ineq (x)
包含了BatchUpdateInterval
条目。
目标函数objconstr.Fval
可以是空的([]
),在这种情况下surrogateopt
试图找到一个满足所有的约束。看到解决问题的可行性。
例如使用非线性约束,明白了解决非线性约束问题,代理与非线性约束优化,解决问题的可行性。信息之间的转换surrogateopt
解决结构语法和其他,明白了packfcn
和surrogateopt之间转换非线性约束形式和其他形式的解算器使用矢量化批量评估为例,看看矢量化代理定制并行仿真的优化。
数据类型:function_handle
|字符
|字符串
intcon
- - - - - -整型变量
向量的正整数
整数变量指定为一个向量的正整数的值1
变量的数量问题。每个值在intcon
代表一个x
组件是整数值。
例子:指定的条目x
是整数值,intcon
来据nvar 2:2:
。
数据类型:双
一个
- - - - - -线性不等式约束
真正的矩阵
线性不等式约束,指定为一个真正的矩阵。一个
是一个米
——- - - - - -据nvar
矩阵,米
是不平等的数量。
一个
编码米
线性不等式
A * x < =
,
在哪里x
的列向量据nvar
变量x (:)
,b
是一个列向量米
元素。
例如,指定
x1+ 2x2≤10
3x1+ 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
3x1+ 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
。
数据类型:双
选项
- - - - - -选项
的输出optimoptions
选项,指定的输出optimoptions
。
有关更多信息,请参见代理优化选项。
选项 | 描述 | 值 |
---|---|---|
BatchUpdateInterval |
|
正整数。默认是 |
CheckpointFile |
文件名检查点和重启优化。文件有 检查点是需要时间的。这个函数的开销尤其明显,否则采取一些时间来评估。 |
文件名或文件路径,给出一个字符串或字符数组。如果你指定一个文件名没有路径, |
ConstraintTolerance |
宽容在非线性约束,测量所有非线性约束函数值中的最大值,正值表明违反。这个公差是一个绝对的(而不是相对的)宽容;看到公差和停止条件。 | 积极的标量。默认是1 e - 3 。 |
显示 |
水平显示在命令行返回。 |
|
InitialPoints |
解算器的初始点。 | 初始点的矩阵,每一行是一个点。或者,一个结构字段
看到算法控制。默认是 |
MaxFunctionEvaluations |
最大数量的目标函数评价,停止准则。 |
正整数。默认是马克斯(200年,50 *据nvar) ,在那里据nvar 是变量的数量问题。 |
MaxTime |
最大运行时间以秒为单位。实际的运行时间可以超过MaxTime 因为所需的时间来评估一个目标函数或并行处理延迟。 |
积极的标量。默认是正 。 |
MinSampleDistance |
审判之间的最小距离点生成的自适应采样器。看到代理优化算法。 | 积极的标量。默认是1 e-6 。 |
MinSurrogatePoints |
最小数量的随机样本点创建在创建代理的开始阶段。看到代理优化算法。 当 |
整数至少据nvar + 1。默认是2 *据nvar max(20日) ,在那里据nvar 是变量的数量问题。 |
ObjectiveLimit |
宽容的目标函数值。如果计算目标函数值小于可行点ObjectiveLimit ,该算法停止。 |
标量值的两倍。默认是负 。 |
OutputFcn |
输出函数来解决进展报告或解决。看到输出函数。 | 函数名、函数处理或单元阵列函数名或处理。默认是[] 。 |
PlotFcn |
情节功能显示解决进展或停止解决者。看到绘制函数。 |
函数名、函数处理或单元阵列函数名或处理。内置的绘图函数是:
|
UseParallel |
布尔值指示是否并行计算目标函数值。 你不能指定 |
布尔。默认是假 。算法细节,请参阅并行surrogateopt算法。 |
UseVectorized |
布尔值指示是否在批量计算目标函数值的大小 你不能指定 |
布尔。默认是假 。例如,看到的矢量化代理定制并行仿真的优化。 |
例子:选择= optimoptions (‘surrogateopt’,‘显示’,‘iter’,‘UseParallel’,真的)
问题
- - - - - -问题的结构
结构
问题的结构,与这些字段指定为一个结构:
客观的
——目标函数,包括非线性约束,指定为一个函数名或函数处理磅
——下界x
乌兰巴托
——上界x
解算器
- - - - - -“surrogateopt”
Aineq
——线性矩阵不等式约束(可选)bineq
——向量线性不等式约束(可选)Aeq
——矩阵线性等式约束(可选)说真的
——向量线性等式约束(可选)选项
——选项创建optimoptions
rngstate
——字段来重置随机数发生器的状态(可选)intcon
——字段指定整数值x
组件(可选)
请注意
这些问题
字段是必需的:客观的
,磅
,乌兰巴托
,解算器
,选项
。
数据类型:结构体
checkpointFile
- - - - - -检查点文件路径
字符串|特征向量
通往一个检查点文件,指定为字符串或字符向量。有一个检查点文件.mat
扩展。如果你指定一个文件名没有路径,surrogateopt
使用检查点文件在当前文件夹。
一个检查点文件存储优化的状态恢复的优化。surrogateopt
在每个函数评估更新检查点文件,所以你可以恢复优化即使surrogateopt
过早地停止。例如,看到的重新启动代理从检查点文件优化。
surrogateopt
创建一个检查点文件时有效CheckpointFile
选择。
你可以改变一些选项,当从一个检查点恢复文件。看到选择
。
一个检查点文件中的数据.mat
格式。为了避免错误或其他意想不到的结果,不要修改数据之前调用surrogateopt
。
警告
不恢复surrogateopt
从一个检查点文件创建不同的MATLAB®的版本。surrogateopt
可以抛出一个错误或不一致的结果。
例子:“checkfile.mat”
例子:“C: \ Program Files \ MATLAB \ docs \ checkpointNov2019.mat”
数据类型:字符
|字符串
选择
- - - - - -选择从检查点文件恢复
[]
(默认)|optimoptions
从限制设置选项
选择恢复优化从检查点文件,指定为optimoptions
选项(从一个受限制的设置),你可以改变从最初的选择。你可以改变的选项:
BatchUpdateInterval
CheckpointFile
显示
MaxFunctionEvaluations
MaxTime
MinSurrogatePoints
ObjectiveLimit
OutputFcn
PlotFcn
UseParallel
UseVectorized
例子:选择= optimoptions(选项,MaxFunctionEvaluations, 400);
输出参数
exitflag
- - -原因surrogateopt
停止
整数
原因surrogateopt
停止,返回的整型值表中描述的一样。
出口标志 | 描述 |
---|---|
|
问题有独特的可行解决方案由于下列之一:
|
3 |
找到可行点。解算器停止是因为继续发现新的可行点太少。 |
|
目标函数值小于 |
|
的数量超过功能评估 |
|
优化输出函数或终止的情节功能。 |
|
没有找到可行的点由于下列之一:
|
输出
——优化过程的信息
结构
优化过程的信息,作为结构返回这些字段:
算法
surrogateopt
重复执行这些步骤:
创建一组试验取样点
MinSurrogatePoints
随机点范围内,计算目标函数在审判点。创建一个代理模型的目标函数由径向基函数插值通过随机试验的所有点。
创建一个价值函数,给代理一些体重和减肥点的距离试验。找到一个小价值的价值函数通过随机抽样价值函数在周边地区现任点(最好点发现自从上次代理重置)。使用这一点,称为自适应点,作为一个新的审判。
评估目标自适应点,并更新代理基于这一点和它的价值。数“成功”,如果目标函数值是足够低于前最好(最低)值,并计算“失败”。
更新样品的分散分布向上如果发生三次成功过
马克斯(据nvar, 5)
失败,据nvar
是尺寸的数量。更新向下分散马克斯(据nvar, 5)
故障发生前三的成功。继续从第3步,直到所有试验内点
MinSampleDistance
的评价点。当时,重置代理通过丢弃所有自适应分代理,重置规模,回到步骤1MinSurrogatePoints
新的随机试验分评价。
有关详细信息,请参见代理优化算法。
选择功能
应用程序
的优化住编辑任务提供了一个可视化界面surrogateopt
。
扩展功能
自动并行支持金宝app
加速代码通过自动运行并行计算使用并行计算工具箱™。
并行运行,设置“UseParallel”
选项真正的
。
选择= optimoptions ('
solvername
”、“UseParallel’,真的)
有关更多信息,请参见如何使用并行处理在全球优化工具箱。
版本历史
介绍了R2018b
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。