代理优化的全局最小化耗时的目标函数
代理选择
是一个全局求解器,用于求解耗时的目标函数。
代理选择
试图解决问题的形式
解算器在多个维度中搜索实值目标函数的全局最小值,受边界、可选线性约束、可选整数约束和可选非线性不等式约束的约束。代理选择
最适合于需要很长时间来计算的目标函数。目标函数可以是非光滑的。解算器要求所有变量都有有限的边界。解算器可以选择维护检查点文件,以便能够从崩溃或部分执行中恢复,或在满足停止条件后继续优化。目标ve函数F(x)可以为空([]
),在这种情况下代理选择
试图找到一个满足所有约束条件的点。
在该区域搜索最小的六驼峰驼背功能-2.1<=x(i)<=2.1
. 该函数有两个全局极小值和目标函数值-1.0316284...
以及4个具有较高目标函数值的局部最小值。
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;lb=[-2.1,-2.1];ub=-lb;x=代理选项(objconstr,lb,ub)
代理选项已停止,因为它超出了“options.MaxFunctionEvaluations”设置的函数计算限制。
x =1×20.0895 -0.7130
求Rosenbrock函数的最小值
受半径为1/3的圆盘绕点[1/3,1/3]的非线性约束:
.
为此,编写一个函数objconstr(十)
返回结构字段中Rosenbrock函数的值Fval
,并返回形式为的非线性约束值
在结构领域Ineq
.
类型objconstr
函数f = objconstr (x) f.Fval = 100 * (x (2) - x (1) ^ 2) ^ 2 + (1 - x (1)) ^ 2;f.Ineq = (x(1)-1/3)^2 + (x(2)-1/3)^2;
调用代理选择
每个组件的下界为0,上界为2/3。
磅= (0,0);乌兰巴托= (2/3,2/3);[x, fval exitflag] = surrogateopt (@objconstr磅,乌兰巴托)
代理选项已停止,因为它超出了“options.MaxFunctionEvaluations”设置的函数计算限制。
x =1×20.6541 0.4279
fval = 0.1197
exitflag=0
检查解处非线性约束的值。
disp (objconstr (x) .Ineq)
7.0843e-04
约束函数值接近于零,表明约束在解处是主动的。
求最小值ps_example
二维变量的函数x
其第一个分量限制为整数值,且所有分量都介于–5和5之间。
intcon = 1;rng默认的%的再现性objconstr = @ps_example;磅= (5,5);乌兰巴托= (5,5);x = surrogateopt (objconstr磅,乌兰巴托,intcon)
代理选项已停止,因为它超出了“options.MaxFunctionEvaluations”设置的函数计算限制。
x =1×2-5.0000 0.0001
最小化该区域的六峰驼背功能-2.1<=x(i)<=2.1
. 该函数有两个全局极小值和目标函数值-1.0316284...
以及4个具有较高目标函数值的局部最小值。
要系统地搜索区域,使用规则的起点网格。将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 (“代理选择”,“PlotFcn”,“surrogateoptplot”,...“初始点”startpts,“MaxFunctionEvaluations”,120);x=代理选项(objconstr,lb,ub,选项)
代理选项已停止,因为它超出了“options.MaxFunctionEvaluations”设置的函数计算限制。
x =1×2-0.0904 - 0.7127
代理选择
最小化受线性不等式约束的非线性目标函数。最小化200次函数计算。
objconstr=@multirosenbrock;nvar=6;lb=-2*one(nvar,1);ub=-lb;intcon=[];A=one(1,nvar);b=3;Aeq=[];beq=[];options=options(“代理选择”,“MaxFunctionEvaluations”,200);[sol,fval,exitflag,output]=...代理选项(objconstr、lb、ub、intcon、A、b、Aeq、beq、选项)
代理选项已停止,因为它超出了“options.MaxFunctionEvaluations”设置的函数计算限制。
索尔=1×60.1404 0.0203 0.3112 0.1215 0.1271 0.0329
fval = 2.0644
exitflag=0
输出=带字段的结构:rngstate: [1x1 struct] message: 'surrogateopt stopped because it exceeded the function evaluation limit by…'
创建一个问题结构,代表该地区的六峰驼背功能-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;选项=options(“代理选择”,“MaxFunctionEvaluations”,120);问题=结构(“目标”objconstr,...“磅”,[-2.1,-2.1],...乌兰巴托的,[2.1,2.1],...“选项”选项,...“规划求解”,“代理选择”);x = surrogateopt(问题)
代理选项已停止,因为它超出了“options.MaxFunctionEvaluations”设置的函数计算限制。
x =1×20.0895 -0.7130
最小化六驼峰驼背函数并返回最小化点和目标函数值。设置选项以抑制所有其他显示。
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 (“代理选择”,“显示”,“关”,“PlotFcn”,[]); [x,fval]=代理选项(objconstr,lb,ub,选项)
x =1×20.0895 -0.7130
fval = -1.0316
通过请求来监视代理优化过程代理选择
返回更多输出。使用“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 (“代理选择”,“PlotFcn”,“surrogateoptplot”);[x, fval exitflag、输出]= surrogateopt (objconstr、磅、乌兰巴托、期权)
代理选项已停止,因为它超出了“options.MaxFunctionEvaluations”设置的函数计算限制。
x =1×20.0895 -0.7130
fval = -1.0316
exitflag=0
输出=带字段的结构:rngstate: [1x1 struct] message: 'surrogateopt stopped because it exceeded the function evaluation limit by…'
通过设置最小的最大函数求值次数,快速完成代理优化。若要准备重新启动优化,请请求所有解算器输出。
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 (“代理选择”,“MaxFunctionEvaluations”,20); [x,fval,exitflag,output,trials]=代理选项(objconstr,lb,ub,options);
代理选项已停止,因为它超出了“options.MaxFunctionEvaluations”设置的函数计算限制。
从先前评估的点开始,再优化20次功能评估。
选项。初始点=审判; [x,fval,exitflag,output,trials] = surrogateopt(objconstr,lb,ub,options);
代理选项已停止,因为它超出了“options.MaxFunctionEvaluations”设置的函数计算限制。
通过将这40个功能评估的曲线图与搜索全局最小值,您可以看到,重新启动代理优化与让求解器连续运行是不同的。
要启用由于崩溃或任何其他原因而重新启动代理优化,请设置检查点文件名。
opts=options(“代理选择”,“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;lb=[-2.1,-2.1];ub=-lb;opts.MaxFunctionEvaluations=30;[x,fval,exitflag,output]=代理选项(objconstr,lb,ub,opts)
Surrogateopt停止,因为它超过了'options.MaxFunctionEvaluations'设置的函数求值限制。
x =1×20.0067 -0.7343
fval = -0.9986
exitflag=0
输出=带字段的结构:[1×0 double] rngstate: [1×1 struct] message: 'Surrogateopt停止,因为它超过了↵'options. maxfunctionevalues '设置的函数求值限制。'
设置选项以使用100个函数评估(这意味着比已经完成的多70个),然后重新启动优化。
选择。MaxFunctionEvaluations = 100; [x2,fval2,exitflag2,output2] = surrogateopt(“checkfile.mat”选择)
Surrogateopt停止,因为它超过了'options.MaxFunctionEvaluations'设置的函数求值限制。
x2=1×20.0895 -0.7130
fval2=-1.0316
exitflag2=0
output2 =带字段的结构:[1×0 double] rngstate: [1×1 struct] message: 'Surrogateopt停止,因为它超过了↵'options. maxfunctionevalues '设置的函数求值限制。'
objconstr
—目标函数与非线性约束目标函数和非线性约束,指定为函数句柄或函数名称。objconstr
接受单个参数x
,在那里x
是一个典型的行向量。然而,当矢量化
选择是真正的
,x
矩阵是否包含选项。BatchUpdateInterval
行;每行代表一个要计算的点。objconstr
返回下列任意一个:
实标量fval=objconstr(x)
.
结构。如果结构包含该字段Fval
然后代理选择
尽量减少objconstr(x).Fval
。如果结构包含该字段Ineq
然后代理选择
试图使该领域的所有组成部分都是非积极的:objconstr(x).Ineq<= 0
所有条目。objconstr(x)
必须包括Fval
或Ineq
字段,或两者都有。代理选择
忽略了其他领域。
当矢量化
选择是真正的
和BatchUpdateInterval
大于1,objconstr
作用于的每一行x
并返回以下内容之一:
实向量fval=objconstr(x)
.未来值
是一个具有选项。BatchUpdateInterval
项(或更少为最后的函数求值时BatchUpdateInterval
并不是平均分配最大函数求值
).
具有向量项的结构。如果结构包含该字段Fval
然后代理选择
尽量减少objconstr(x).Fval
,objconstr(x).Fval
向量的长度是多少BatchUpdateInterval
(或更少)。如果结构包含字段Ineq
然后代理选择
试图使该领域的所有组成部分都是非积极的:objconstr(x).Ineq<= 0
对于所有的条目,并且objconstr(x).Ineq
包含多达BatchUpdateInterval
条目。
目标函数objconstr.Fval
可以是空的([]
),在这种情况下代理选择
试图找到一个满足所有约束条件的点。看到解决可行性问题.
有关使用非线性约束的示例,请参见非线性约束问题的求解,具有非线性约束的代理优化,解决可行性问题.的转换信息代理选择
结构语法和其他解算器,请参见packfcn
和在代理选择形式和其他求解形式之间转换非线性约束有关使用向量化批计算的示例,请参见定制并行仿真的矢量化代理优化.
数据类型:功能手柄
|字符
|字符串
intcon
—整型变量整数变量,指定为具有以下值的正整数向量1.
到问题变量的数量。中的每个值intcon
代表x
整数值组件。
例子:将偶数项指定为x
是整数值集intcon
来据nvar 2:2:
.
数据类型:双
A.
—线性不等式约束线性不等式约束,指定为实矩阵。A.
是一个M
——- - - - - -据nvar
矩阵,M
是不等式的数目。
A.
编码M
线性不等式
A * x < =
,
在哪里x
列向量是据nvar
变量x (:)
,B
是一个具有M
元素。
例如,指定
x1.+ 2x2.≤ 10
3.x1.+ 4x2.≤ 20
5.x1.+ 6x2.≤ 30,
给出以下约束条件:
= [1, 2, 3, 4, 5, 6);b =(10、20、30);
例子:要指定控制变量的和为1或更小,请给出约束条件一个= 1 (1,N)
和b=1
.
数据类型:双
B
—线性不等式约束线性不等式约束,指定为实向量。B
是一个M
元素向量相关的A.
矩阵,如果你通过的话B
作为行向量,解算器在内部进行转换B
到列向量b (:)
.
B
编码M
线性不等式
A * x < =
,
在哪里x
列向量是N
变量x (:)
,A.
矩阵的大小是多少M
——- - - - - -N
.
例如,指定
x1.+ 2x2.≤ 10
3.x1.+ 4x2.≤ 20
5.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
列向量是N
变量x (:)
,贝基
是一个具有我
元素。
例如,指定
x1.+ 2x2.+ 3x3.= 10
2.x1.+ 4x2.+x3.= 20,
给出以下约束条件:
Aeq=[1,2,3;2,4,1];beq=[10;20];
例子:要指定控制变量总和为1,请给出约束Aeq=一(1,N)
和beq=1
.
数据类型:双
贝基
—线性等式约束线性等式约束,指定为实向量。贝基
是一个我
元素向量相关的Aeq
矩阵,如果你通过的话贝基
作为行向量,解算器在内部进行转换贝基
到列向量说真的(:)
.
贝基
编码我
线性等式
Aeq*x=beq
,
在哪里x
列向量是N
变量x (:)
,Aeq
矩阵的大小是多少微地震
——- - - - - -N
.
例如,指定
x1.+ 2x2.+ 3x3.= 10
2.x1.+ 4x2.+x3.= 20,
给出以下约束条件:
Aeq=[1,2,3;2,4,1];beq=[10;20];
例子:要指定控制变量总和为1,请给出约束Aeq=一(1,N)
和beq=1
.
数据类型:双
选项
—选项最佳选择
选项,指定为的输出最佳选择
.
有关更多信息,请参见代理优化选项.
选项 | 描述 | 价值观 |
---|---|---|
BatchUpdateInterval |
|
正整数。默认值为 |
检查点文件 |
用于检查点和重新启动优化的文件名。该文件包含 检查点是需要时间的。这种开销对于那些需要很少时间计算的函数来说尤其明显。 |
文件名或文件路径,以字符串或字符数组形式给出。如果指定的文件名没有路径, |
ConstraintTolerance |
非线性约束公差,测量为所有非线性约束函数值的最大值,正值表示违规。此公差为绝对(非相对)公差;请参阅公差和停止标准. | 积极的标量。默认是1e-3 . |
显示 |
在命令行返回的显示级别。 |
|
初始点 |
解算器的初始点。 | 初始点矩阵,每一行是一个点。或者,一个有场的结构
看到算法控制.默认是 |
最大函数求值 |
目标函数计算的最大次数,一个停止准则。 |
正整数。默认值为最大值(200,50*nvar) ,在那里nvar 为问题变量的数量。 |
MaxTime |
最大运行时间(秒)。实际运行时间可以超过MaxTime 由于评估目标函数所需的时间或并行处理延迟。 |
积极的标量。默认是Inf . |
MinSampleDistance |
自适应采样器产生的试验点之间的最小距离。看到代理优化算法. | 积极的标量。默认是1e-3 . |
MinSurrogatePoints |
在代理项创建阶段开始时要创建的最小随机采样点数。请参阅代理优化算法. 当 |
整数至少nvar + 1。默认是2 *据nvar max(20日) ,在那里nvar 为问题变量的数量。 |
客观限度 |
目标函数值的公差。如果可行点的计算目标函数值小于客观限度 ,算法停止。 |
双标量值。默认为-Inf . |
输出FCN |
输出函数,用于报告解算器进度或停止解算器。请参阅输出函数. | 函数名、函数句柄或函数名或句柄的单元格数组。默认是[] . |
绘图仪 |
打印函数以显示解算器进度或停止解算器。请参阅绘图函数. |
函数名、函数句柄或函数名或句柄的单元格数组。内置的绘图功能有:
|
使用并行 |
指示是否并行计算目标函数值的布尔值。 不能同时指定两者 |
布尔。默认是错误的 .有关算法的细节,请参见并行surrogateopt算法. |
UseVectorized |
布尔值,指示是否批量计算目标函数的大小 不能同时指定两者 |
布尔。默认是错误的 。有关示例,请参阅定制并行仿真的矢量化代理优化. |
例子:options=options('subrogateopt'、'Display'、'iter'、'UseParallel',true)
问题
—问题的结构问题结构,指定为具有以下字段的结构:
客观的
-目标函数,可以包含非线性约束,指定为函数名或函数句柄
磅
-下界x
乌兰巴托
-的上界x
解算器
—“代理选择”
艾奈克
-线性不等式约束矩阵(可选)
bineq
线性不等式约束向量(可选)
Aeq
-线性等式约束矩阵(可选)
贝基
-线性等式约束向量(可选)
选项
-使用最佳选择
rngstate
-用于重置随机数生成器状态的字段(可选)
intcon
-指定整数值的字段x
组件(可选)
笔记
这些问题
字段是必需的:客观的
,磅
,乌兰巴托
,解算器
,选项
.
数据类型:结构
检查点文件
—检查点文件路径检查点文件的路径,指定为字符串或字符向量。检查点文件具有.mat
扩展。如果你指定了一个没有路径的文件名,代理选择
使用当前文件夹中的检查点文件。
检查点文件存储用于恢复优化的优化状态。代理选择
在每次函数求值时更新检查点文件,这样即使在代理选择
过早停止。有关示例,请参阅从检查点文件重新启动代理优化.
代理选择
当检查点文件具有有效的检查点文件
选择。
当从检查点文件恢复时,可以更改一些选项。看到选择
.
检查点文件中的数据在.mat
格式。为避免错误或其他意外结果,请在调用之前不要修改数据代理选择
.
警告
不恢复代理选择
从使用不同MATLAB创建的检查点文件®版本代理选择
可能会抛出错误或给出不一致的结果。
例子:“checkfile.mat”
例子:“C: \ Program Files \ MATLAB \ docs \ checkpointNov2019.mat”
数据类型:字符
|字符串
选择
—从检查点文件恢复的选项[]
(默认)|最佳选择
限制集合中的选项用于从检查点文件恢复优化的选项,指定为最佳选择
可以从原始选项更改的选项(来自受限集)。可以更改的选项包括:
BatchUpdateInterval
检查点文件
显示
最大函数求值
MaxTime
MinSurrogatePoints
客观限度
输出FCN
绘图仪
使用并行
UseVectorized
例子:选择= optimoptions(选项,MaxFunctionEvaluations, 400);
出口滞后
- - -原因代理选择
停止原因代理选择
已停止,作为此表中描述的整数值之一返回。
出口标志 | 描述 |
---|---|
|
问题有唯一可行的解决方案,原因如下:
|
3. |
找到可行点。解算器停止,因为找到的新可行点太少,无法继续。 |
|
目标函数值小于 |
|
函数求值的次数超过 |
|
优化由输出函数或绘图函数终止。 |
|
由于以下原因之一,未找到可行点:
|
输出
-优化流程信息代理选择
重复执行以下步骤:
通过抽样创建一组试验点MinSurrogatePoints
在边界内随机点,并在试验点评估目标函数。
通过对所有随机试验点插值径向基函数,创建目标函数的替代模型。
创建一个优点函数,为代理项赋予一些权重,并为到试验点的距离赋予一些权重。通过在在任点(自最后一个代理重置以来找到的最佳点)周围的区域中随机取样价值函数来定位价值函数的一个小值。使用这个点,称为自适应点,作为一个新的试验点。
在自适应点评估目标,并基于该点及其值更新代理项。如果目标函数值远远低于之前观察到的最佳(最低)值,则计算“成功”,否则计算“失败”。
如果之前三次成功,则向上更新样本分布的离散度马克斯(据nvar, 5)
失败,在哪里nvar
是维度数。如果需要,向下更新离散度马克斯(据nvar, 5)
失败先于成功。
从步骤3继续,直到所有试验点都在MinSampleDistance
此时,通过放弃代理中的所有自适应点来重置代理,重置比例,然后返回到步骤1以创建MinSurrogatePoints
新的随机测试点用于评估。
有关详细信息,请参阅代理优化算法.
这个优化实时编辑器任务为代理选择
.
您有一个连接到MATLAB-Befehl entspricht:
弗伦·德尔奇·艾恩加贝(Führen Sie den Befehl durch Eingabe)在澳大利亚的MATLAB中,韦伯罗(Webbrowser)在MATLAB中的位置比基恩·基恩·MATLAB好。
你也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家/地区站点不适合您所在位置的访问。