主要内容

surrogateopt

耗时目标函数全局最小化的代理优化

描述

surrogateopt是耗时目标函数的全局求解器。

surrogateopt试图解决形式上的问题

最小值 x f x 这样 x 乌兰巴托 一个 · x b Aeq · x 说真的 c x 0 x 整数, intcon

该求解器在多个维度上搜索实值目标函数的全局最小值,受限于边界、可选线性约束、可选整数约束和可选非线性不等式约束。surrogateopt最适合于需要很长时间来评估的目标函数。目标函数可以是非光滑的。求解器要求所有变量的边界都是有限的。求解器可以有选择地维护检查点文件,以支持从崩溃或部分执行中恢复,或在满足停止条件后继续优化。目标函数fx)可以为空([],在这种情况下surrogateopt试图找到一个满足所有约束条件的点。

例子

x= surrogateopt (objconstr乌兰巴托的全局最小值搜索objconstr (x)在该地区Lb <= x <= ub.如果objconstr (x)然后返回一个结构surrogateopt搜索最小值objconstr (x)。Fval,objconstr (x)。Ineq < = 0

请注意

传递额外的参数解释如何在必要时向目标函数传递额外的参数。

例子

x= surrogateopt (objconstr乌兰巴托intcon中列出的变量intcon取整数值。

例子

x= surrogateopt (objconstr乌兰巴托intcon一个bAeq说真的要求解x满足的不平等A * x < =与平等Aeq * x =说真的.如果不存在不等式,则设置一个= []而且b = [].类似地,如果不存在等式,则设置Aeq = []而且说真的= []

例子

x= surrogateopt (___选项中的选项修改搜索过程选项.指定选项在前面语法中的任何输入参数组合之后。

例子

x= surrogateopt (问题搜索的最小值问题中描述的结构问题

例子

x= surrogateopt (checkpointFile从保存的检查点文件中的状态继续运行优化。看到使用检查点文件

例子

x= surrogateopt (checkpointFile选择继续从已保存检查点文件中的状态运行优化,并替换checkpointFile与那些在选择.看到检查点文件

例子

xfval) = surrogateopt (___还返回由求解器找到的目标函数的最佳(最小)值,使用前面语法中的任何输入参数组合。

例子

xfvalexitflag输出) = surrogateopt (___同样的回报exitflag,一个描述求解器停止原因的整数,和输出,描述优化过程的结构。

例子

xfvalexitflag输出试用) = surrogateopt (___还返回一个包含所有已评估点和这些点的目标函数值的结构。

例子

全部折叠

在该区域搜索最小的六峰驼背函数-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. maxfunctionevaluments '设置的函数求值限制。
x =1×20.0893 - -0.7130

求Rosenbrock函数的最小值

1 0 0 x 2 - x 1 2 2 + 1 - x 1 2

在非线性约束下,解位于点[1/3,1/3]周围半径为1/3的圆盘上:

x 1 - 1 / 3. 2 + x 2 - 1 / 3. 2 1 / 3. 2

为此,编写一个函数objconstr(x)返回结构字段中Rosenbrock函数的值Fval,并返回表单中的非线性约束值 c x 0 在结构领域Ineq

类型objconstr
函数f = objconstr (x) f.Fval = 100 * (x (2) - x (1) ^ 2) ^ 2 + (1 - x (1)) ^ 2;f.Ineq = (x(1)-1/3)²+ (x(2)-1/3)²-(1/3)²;

调用surrogateopt在每个分量上使用0的下界和2/3的上界。

磅= (0,0);乌兰巴托= (2/3,2/3);[x, fval exitflag] = surrogateopt (@objconstr磅,乌兰巴托)

{

surrogateopt停止,因为它超过了'options. maxfunctionevaluments '设置的函数求值限制。
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. maxfunctionevaluments '设置的函数求值限制。
x =1×2-5.0000 - 0.0006

使该地区的六驼峰驼背功能最小化-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. maxfunctionevaluments '设置的函数求值限制。
x =1×20.0900 - -0.7123

最小化受线性不等式约束的非线性目标函数。为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. maxfunctionevaluments '设置的函数求值限制。
索尔=1×60.0159 0.0061 0.0289 0.0046 0.0207 0.0209
fval = 2.9173
exitflag = 0
输出=结构体字段:Elapsedtime: 32.4536 funccount: 200 constrviolation: 0 ineq: [1x0 double] rngstate: [1x1 struct] message: 'surrogateopt已停止,因为它超过了由…设置的函数计算限制'

创建一个代表该区域六峰驼背函数的问题结构-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. maxfunctionevaluments '设置的函数求值限制。
x =1×2-0.0892 - 0.7129

对六驼峰驼背函数进行最小化处理,同时返回最小值点和目标函数值。设置选项以抑制所有其他显示。

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. maxfunctionevaluments '设置的函数求值限制。
x =1×20.0893 - -0.7130
fval = -1.0316
exitflag = 0
输出=结构体字段:Elapsedtime: 33.6659 funccount: 200 constrviolation: 0 ineq: [1x0 double] rngstate: [1x1 struct] message: '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. maxfunctionevaluments '设置的函数求值限制。

从以前的评估点开始,优化另外20个函数评估。

选项。InitialPoints =试验;[x, fval exitflag、输出试验]= surrogateopt (objconstr、磅、乌兰巴托、期权);

{

surrogateopt停止,因为它超过了'options. maxfunctionevaluments '设置的函数求值限制。

将这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. maxfunctionevaluments '设置的函数计算限制。
x =1×20.0067 - -0.7343
fval = -0.9986
exitflag = 0
输出=结构体字段:elapsedtime: 28.7221 funccount: 30 constrtion: 0 ineq: [1×0 double] rngstate: [1×1 struct] message: 'Surrogateopt停止,因为它超过了由'options.MaxFunctionEvaluations'设置的函数评估限制。'

设置选项使用100个函数计算(这意味着比已经完成的计算多70个)并重新启动优化。

选择。米axFunctionEvaluations = 100; [x2,fval2,exitflag2,output2] = surrogateopt(“checkfile.mat”选择)

Surrogateopt停止,因为它超过了'options. maxfunctionevaluments '设置的函数计算限制。
x2 =1×20.0895 - -0.7130
fval2 = -1.0316
exitflag2 = 0
output2 =结构体字段:elapsedtime: 159.2411 funccount: 100 constrtion: 0 ineq: [1×0 double] rngstate: [1×1 struct] message: 'Surrogateopt停止,因为它超过了由'options.MaxFunctionEvaluations'设置的函数评估限制。'

输入参数

全部折叠

目标函数和非线性约束,指定为函数句柄或函数名。objconstr接受一个参数x,在那里x通常是一个行向量。然而,当矢量化选择是真正的x是一个包含选项。BatchUpdateInterval行;每一行表示一个要计算的点。objconstr返回以下之一:

  • 真正的标量fval = objconstr (x)

  • 结构。如果结构包含字段Fval,然后surrogateopt试图最小化objconstr (x)。Fval.如果结构包含字段Ineq,然后surrogateopt试图使该字段的所有组成部分为非正的:objconstr (x)。Ineq < = 0所有条目。objconstr (x)必须包括FvalIneq字段,或两者兼而有之。surrogateopt忽略了其他领域。

矢量化选择是真正的BatchUpdateInterval大于1,objconstr的每一行x并返回以下其中之一:

  • 真正的向量fval = objconstr (x)fval列向量是选项。BatchUpdateInterval时,最后一个函数求值的项(或更少)BatchUpdateInterval不能平均分配MaxFunctionEvaluations).

  • 具有向量项的结构。如果结构包含字段Fval,然后surrogateopt试图最小化objconstr (x)。Fval,objconstr (x)。Fval是长度向量吗BatchUpdateInterval(或更少)。如果结构包含字段Ineq,然后surrogateopt试图使该字段的所有组成部分为非正的:objconstr (x)。Ineq < = 0对于所有的项,和objconstr (x)。Ineq包含了BatchUpdateInterval条目。

目标函数objconstr。Fval可为空([],在这种情况下surrogateopt试图找到一个满足所有约束条件的点。看到解决问题的可行性

有关使用非线性约束的示例,请参见解决非线性约束问题非线性约束下的代理优化,解决问题的可行性.的转换信息surrogateopt结构语法和其他求解器,请参见packfcn而且在代理选择形式和其他求解器形式之间转换非线性约束有关使用向量化批处理计算的示例,请参见面向定制并行仿真的矢量代理优化

数据类型:function_handle|字符|字符串

下界,指定为有限实向量。中的元素的下界x乌兰巴托.的长度而且乌兰巴托必须等于变量的个数objconstr接受。

谨慎

虽然对于大多数求解器是可选的,是否需要输入surrogateopt

请注意

surrogateopt允许相等的条目而且乌兰巴托.为每一个intcon,你一定有地板装天花板(磅(i)) < =(乌兰巴托(i)).看到构建代理细节

例子:磅= [0;-20;4)意味着x(1)≥0x(2)≥-20x(3)≥4

数据类型:

上界,指定为有限实向量。乌兰巴托中元素的上界x乌兰巴托.的长度而且乌兰巴托必须等于变量的个数objconstr接受。

谨慎

虽然乌兰巴托对于大多数求解器是可选的,乌兰巴托是否需要输入surrogateopt

请注意

surrogateopt允许相等的条目而且乌兰巴托.为每一个intcon,你一定有地板装天花板(磅(i)) < =(乌兰巴托(i)).看到构建代理细节

例子:乌兰巴托= (10;-20;4)意味着x(1)≤10x(2)≤-20x(3)≤4

数据类型:

整数变量,指定为一个正整数向量,其值来自1问题变量的数量。每个值在intcon代表一个x整数值的组件。

例子:要指定偶数项x是整数值,intcon据nvar 2:2:

数据类型:

线性不等式约束,指定为实矩阵。一个是一个——- - - - - -据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编码线性不等式

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是一个——- - - - - -据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

有关更多信息,请参见代理优化选项

选项 描述
BatchUpdateInterval
  • 更新代理程序之前的函数求值次数。

  • 在向量化评估中要通过的点数。当UseVectorized真正的surrogateopt传递一个大小的矩阵BatchUpdateInterval——- - - - - -据nvar,在那里据nvar是问题变量的个数。矩阵的每一行表示一个评估点。输出函数和plot函数在每个批完全求值后更新。

正整数。默认是1

CheckpointFile

检查点和重新启动优化的文件名。该文件具有.mat数据类型。看到使用检查点文件

检查点是需要时间的。对于那些计算时间较短的函数,这种开销尤其明显。

文件名或文件路径,以字符串或字符数组形式给出。如果指定的文件名没有路径,surrogateopt将检查点文件保存在当前文件夹中。

ConstraintTolerance 非线性约束的公差,用所有非线性约束函数值的最大值来衡量,其中正值表示违规。这种公差是绝对的(不是相对的)公差;看到公差和停止标准 积极的标量。默认是1 e - 3
显示

命令行返回的显示级别。

  • “最后一次”(默认)—在迭代结束时退出消息。

  • “关闭”或同等“没有”——没有显示。

  • “通路”——迭代显示;看到命令行显示

InitialPoints 初始点求解。

初始点的矩阵,每一行是一个点。或者,一个带场的结构X,其值为初始点的矩阵,以及以下可选字段:

  • Fval,一个包含目标函数在初始点的值的向量

  • Ineq,一个包含非线性不等式约束值的矩阵

看到算法控制.默认是[]

MaxFunctionEvaluations

目标函数评估的最大值,一个停止准则。

正整数。默认是马克斯(200年,50 *据nvar),在那里据nvar是问题变量的个数。
MaxTime 以秒为单位的最大运行时间。实际运行时间可超过MaxTime因为评估一个目标函数需要时间,或者因为并行处理延迟。 积极的标量。默认是
MinSampleDistance 自适应采样器产生的试验点之间的最小距离。看到代理优化算法 积极的标量。默认是1 e-6
MinSurrogatePoints

在代理创建阶段开始时要创建的最小随机样本点数量。看到代理优化算法

BatchUpdateInterval> 1,用于创建代理的最小随机抽样点数为两者中较大的MinSurrogatePoints而且BatchUpdateInterval

整数至少据nvar+ 1。默认是2 *据nvar max(20日),在那里据nvar是问题变量的个数。
ObjectiveLimit 公差对目标函数值的影响。如果可行点的计算目标函数值小于ObjectiveLimit,算法停止。 标量值的两倍。默认是
OutputFcn 输出函数报告求解程序的进度或停止求解程序。看到输出函数 函数名、函数句柄或函数名或句柄的单元格数组。默认是[]
PlotFcn

绘图功能显示求解程序的进度或停止求解程序。看到绘制函数

函数名、函数句柄或函数名或句柄的单元格数组。内置的plot函数是:

  • “optimplotfvalconstr”(默认)-将找到的最佳可行目标函数值绘制为线形图。如果没有目标函数,将最大的非线性约束违例用折线图表示。

    • 图中红色表示不可行点,蓝色表示可行点。

    • 如果没有目标函数,图标题显示可行解的数量。

  • “optimplotfval”-将找到的最佳目标函数值绘制成折线图。

  • “optimplotx”-将找到的最佳解决方案绘制成柱状图。

  • “surrogateoptplot”-绘制每次迭代的目标函数值,显示算法的哪个阶段产生的值,以及该阶段和整体发现的最佳值。看到解释surrogateoptplot

UseParallel

布尔值,指示是否并行计算目标函数值。

不能同时指定两者UseParallel = true而且UseVectorized = true.如果你把两者都设为真正的,求解器忽略UseVectorized并尝试使用并行池进行并行计算(如果可能的话)。

布尔。默认是.有关算法的详细信息,请参见并行surrogateopt算法
UseVectorized

布尔值,指示是否按批量大小计算目标函数值BatchUpdateInterval

不能同时指定两者UseParallel = true而且UseVectorized = true.如果你把两者都设为真正的,求解器忽略UseVectorized并尝试使用并行池进行并行计算(如果可能的话)。

布尔。默认是.示例请参见面向定制并行仿真的矢量代理优化

例子:选择= optimoptions(‘surrogateopt’,‘显示’,‘iter’,‘UseParallel’,真的)

问题结构,指定为具有以下字段的结构:

  • 客观的-目标函数,可以包括非线性约束,指定为函数名或函数句柄

  • 的下界x

  • 乌兰巴托-的上限x

  • 解算器- - - - - -“surrogateopt”

  • Aineq-用于线性不等式约束的矩阵(可选)

  • bineq-线性不等式约束向量(可选)

  • Aeq-矩阵线性等式约束(可选)

  • 说真的-线性等式约束的向量(可选)

  • 选项-使用创建的选项optimoptions

  • rngstate重置随机数生成器状态的字段(可选)

  • intcon-指定整型值的字段x组件(可选)

请注意

这些问题字段是必需的:客观的乌兰巴托解算器,选项

数据类型:结构体

检查点文件的路径,指定为字符串或字符向量。检查点文件具有.mat扩展。如果指定的文件名没有路径,surrogateopt使用当前文件夹中的检查点文件。

检查点文件存储用于恢复优化的优化状态。surrogateopt在每次函数计算时更新检查点文件,因此即使在surrogateopt过早地停止。示例请参见从检查点文件重新启动代理优化

surrogateopt当检查点文件具有有效的CheckpointFile选择。

从检查点文件恢复时,可以更改一些选项。看到选择

检查点文件中的数据在.mat格式。为了避免错误或其他意想不到的结果,在调用之前不要修改数据surrogateopt

警告

不恢复surrogateopt从用不同的MATLAB创建的检查点文件®的版本。surrogateopt可能抛出错误或给出不一致的结果。

例子:“checkfile.mat”

例子:“C: \ Program Files \ MATLAB \ docs \ checkpointNov2019.mat”

数据类型:字符|字符串

从检查点文件恢复优化的选项,指定为optimoptions可以从原始选项中更改的选项(来自受限集)。您可以更改的选项有:

  • BatchUpdateInterval

  • CheckpointFile

  • 显示

  • MaxFunctionEvaluations

  • MaxTime

  • MinSurrogatePoints

  • ObjectiveLimit

  • OutputFcn

  • PlotFcn

  • UseParallel

  • UseVectorized

例子:选择= optimoptions(选项,MaxFunctionEvaluations, 400);

输出参数

全部折叠

解,作为实向量返回。x长度和而且乌兰巴托

目标函数在解处的值,作为实数返回。

  • objconstr返回一个标量,fval是一个标量objconstr (x)

  • objconstr返回一个结构,fval是价值objconstr (x)。Fval,目标函数值在x(如果该值存在)。

原因surrogateopt停止,返回为该表中描述的整数值之一。

出口标志 描述

10

由于下列原因之一,问题具有唯一可行解:

  • 所有的上界乌兰巴托等于下界吗

  • 线性等式约束Aeq * x =说真的边界有一个唯一的解点。

surrogateopt返回可行点和函数值,不执行任何优化。

3. 找到可行点。求解器停止,因为找到的新的可行点太少,无法继续。

1

目标函数值小于选项。ObjectiveLimit.此退出标志优先于退出标志10当适用。

0

函数求值的次数超过选项。米axFunctionEvaluations或运行时间超过选项。MaxTime.如果问题存在非线性不等式,则解是可行的。

-1

优化由输出函数或图函数结束。

-2

由于下列情况之一,没有找到可行点:

  • 一个下界磅(我)超过相应的上限乌兰巴托(我).或者一个或多个装天花板(磅(i))超过一个相应的地板(乌兰巴托(i))因为我在intcon.在这种情况下,surrogateopt返回x = []而且fval = []

  • 磅=乌兰巴托和点是不可行的。在这种情况下,x =磅,fval = objconstr (x)。Fval

  • 线性约束和整数约束(如果存在)与边界一起是不可行的。在这种情况下,surrogateopt返回x = []而且fval = []

  • 边界,整数和线性约束是可行的,但没有可行的解与非线性约束。在这种情况下,x是非线性约束的最小最大值不可行的点,和fval = objconstr (x)。Fval

关于优化过程的信息,作为包含以下字段的结构返回:

  • funccount-函数评估总数。

  • elapsedtime-运行求解器的时间,以秒为单位,以抽搐/toc

  • 消息—算法停止的原因。

  • constrviolation-最大的非线性约束违反,如果有。constrviolation = max (output.ineq)

  • ineq-解处的非线性不等式约束值x.如果objconstr然后返回一个结构ineqobjconstr (x)。Ineq.否则,ineq是空的。

  • rngstate-算法开始前的MATLAB随机数生成器状态。使用此字段可重新生成结果。看到复制的结果,讨论使用rngstate遗传算法

计算的点,作为具有以下字段的结构返回:

  • X——矩阵据nvar列,据nvar的长度乌兰巴托.每一行的X表示一个点的值surrogateopt

  • Fval-列向量,其中每一项都是对应行的目标函数值X

  • Ineq的矩阵,每一行表示对应行的约束函数值X

试用结构的形式与选项。InitialPoints结构。因此,您可以通过传递试用结构的InitialPoints选择。

算法

surrogateopt重复执行以下步骤:

  1. 通过抽样创建一组试验点MinSurrogatePoints取边界内的随机点,并在试验点处求目标函数值。

  2. 通过插值一个径向基函数通过所有随机试验点来创建目标函数的代理模型。

  3. 创建一个价值函数,赋予替代项一些权重,赋予到试验点的距离一些权重。通过在当前点(自上次代理重置以来找到的最佳点)周围的区域中随机抽样价值函数来定位价值函数的一个小值。使用这个点,称为自适应点,作为一个新的试验点。

  4. 评估自适应点上的目标,并基于此点及其值更新代理。如果目标函数值远远低于之前观察到的最佳(最低)值,则计算为“成功”,否则计算为“失败”。

  5. 如果之前出现了三次成功,则向上更新样本分布的离散度马克斯(据nvar, 5)失败,据nvar是维数。向下更新色散马克斯(据nvar, 5)失败发生在三次成功之前。

  6. 继续步骤3,直到所有的试点都在MinSampleDistance的值。这时,通过丢弃代理上的所有自适应点来重置代理,重置规模,然后回到第1步进行创建MinSurrogatePoints新的随机试验点用于评价。

有关详细信息,请参见代理优化算法

选择功能

应用程序

优化Live Editor任务提供了一个可视化的界面surrogateopt

扩展功能

版本历史

介绍了R2018b

Baidu
map