主要内容

surrogateopt

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

自从R2018b

描述

surrogateopt是一个全球性的解决耗时的目标函数。

surrogateopt试图解决问题的形式

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

实值的解算器搜索全球最小目标函数在多个维度,界限,可选的线性约束,可选的整数约束,以及可选的非线性不等式约束。surrogateopt最适合目标函数,需要很长时间才能评估。目标函数可以非光滑。解算器需要有限的边界上所有的变量。解算器可以维持一个检查点文件,使康复崩溃或部分执行,或停止条件优化后继续会议。目标函数f(x)可以是空的([]),在这种情况下surrogateopt试图找到一个满足所有的约束。

例子

x= surrogateopt (objconstr,,乌兰巴托)搜索一个全球最低的objconstr (x)在该地区磅< = x < =乌兰巴托。如果objconstr (x)返回一个结构surrogateopt搜索一个最低的objconstr .Fval (x),objconstr .Ineq (x)<= 0

请注意

传递额外的参数解释如何通过额外参数的目标函数,如果必要的。

例子

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

例子

x= surrogateopt (objconstr,,乌兰巴托,intcon,一个,b,Aeq,说真的)要求的解决方案x满足的不平等A * x < =与平等Aeq * x =说真的。如果不存在不平等,集一个= []b = []。同样,如果不存在平等,集Aeq = []说真的= []

例子

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

例子

x= surrogateopt (问题)寻找一个最低问题描述的结构问题

例子

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

例子

x= surrogateopt (checkpointFile,选择)持续运行的优化状态保存检查点文件,和替换选项checkpointFile与那些在选择。看到检查点文件

例子

(x,fval)= surrogateopt (___)也回报最好的(最小的)价值发现的目标函数的解算器,使用任何输入参数组合在前面的语法。

例子

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

例子

(x,fval,exitflag,输出,试用)= surrogateopt (___)还返回一个结构,其中包含所有的评估点,这些点的目标函数值。

例子

全部折叠

寻找最低的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磅,乌兰巴托)

图优化函数包含一个坐标轴对象。坐标轴对象与标题最好的函数值:-1.03163,包含迭代,ylabel函数值包含一行对象显示它的值只使用标记。该对象代表最好的函数值。

surrogateopt停止,因为它超过了设定的评价函数极限“options.MaxFunctionEvaluations”。
x =1×20.0893 - -0.7130

找到最低。海涅的函数

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)返回的价值。在结构领域的功能Fval,并返回表单中的非线性约束值 c ( x ) 0 在结构领域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磅,乌兰巴托)

图优化函数包含一个坐标轴对象。坐标轴对象与标题最好的函数值:0.11944,包含迭代,ylabel函数值包含2线类型的对象。一个或多个行显示的值只使用这些对象标记代表最佳函数值(不可行),最好的函数值。

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)

图优化函数包含一个坐标轴对象。坐标轴对象与标题最好的函数值:-1.91723,包含迭代,ylabel函数值包含一行对象显示它的值只使用标记。该对象代表最好的函数值。

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、磅、乌兰巴托、期权)

图优化函数包含一个坐标轴对象。现任坐标轴对象与标题最好:-1.03163:-1.02923电流:-0.996835,包含数量评估函数,ylabel目标函数包含6行类型的对象。一个或多个行显示的值只使用这些对象标记代表最好,现任,初始样本,自适应样本,代孕重置,随机样本。

surrogateopt停止,因为它超过了设定的评价函数极限“options.MaxFunctionEvaluations”。
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,说真的,选项)

图优化函数包含一个坐标轴对象。坐标轴对象与标题最好的函数值:2.91728,包含迭代,ylabel函数值包含一行对象显示它的值只使用标记。该对象代表最好的函数值。

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(问题)

图优化函数包含一个坐标轴对象。坐标轴对象与标题最好的函数值:-1.03163,包含迭代,ylabel函数值包含一行对象显示它的值只使用标记。该对象代表最好的函数值。

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、磅、乌兰巴托、期权)

图优化函数包含一个坐标轴对象。现任坐标轴对象与标题最好:-1.03163:-0.805258电流:0.0541771,包含数量评估函数,ylabel目标函数包含6行类型的对象。一个或多个行显示的值只使用这些对象标记代表最好,现任,随机样本,自适应样本,代理重置。

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、磅、乌兰巴托、期权);

图优化函数包含一个坐标轴对象。坐标轴对象与标题最好的函数值:-0.124304,包含迭代,ylabel函数值包含一行对象显示它的值只使用标记。该对象代表最好的函数值。

surrogateopt停止,因为它超过了设定的评价函数极限“options.MaxFunctionEvaluations”。

优化20功能评估,从以前开始评估点。

options.InitialPoints=试用; [x,fval,exitflag,output,trials] = surrogateopt(objconstr,lb,ub,options);

图优化函数包含一个坐标轴对象。坐标轴对象与标题最好的函数值:-1.03147,包含迭代,ylabel函数值包含一行对象显示它的值只使用标记。该对象代表最好的函数值。

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接受一个参数x,在那里x通常是一个行向量。然而,当矢量化选择是真正的,x是一个矩阵包含options.BatchUpdateInterval行;每一行代表一个点来评估。objconstr返回以下之一:

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

  • 结构。如果结构包含的字段Fval,然后surrogateopt试图最小化objconstr .Fval (x)。如果结构包含的字段Ineq,然后surrogateopt尝试所有组件的字段负值的:objconstr .Ineq (x)<= 0所有条目。objconstr (x)必须包括的FvalIneq字段,或两者兼而有之。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解决结构语法和其他,明白了packfcnsurrogateopt之间转换非线性约束形式和其他形式的解算器使用矢量化批量评估为例,看看矢量化代理定制并行仿真的优化

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

下界,指定为一个有限的真正的向量。代表了下界element-wisex乌兰巴托。的长度乌兰巴托必须等于变量的数量objconstr接受。

谨慎

虽然是可选的解决对于大多数,是一个需要输入surrogateopt

请注意

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

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

数据类型:

上界,指定为一个有限的真正的向量。乌兰巴托代表了上界element-wisex乌兰巴托。的长度乌兰巴托必须等于变量的数量objconstr接受。

谨慎

虽然乌兰巴托是可选的解决对于大多数,乌兰巴托是一个需要输入surrogateopt

请注意

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

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

数据类型:

整数变量指定为一个向量的正整数的值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编码线性不等式

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是一个——- - - - - -据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是变量的数量问题。矩阵的每一行代表一个评估点。输出函数和情节函数更新后每一批完全评估。

正整数。默认是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,最低数量的随机样本点用于创建一个代理是较大的MinSurrogatePointsBatchUpdateInterval

整数至少据nvar+ 1。默认是2 *据nvar max(20日),在那里据nvar是变量的数量问题。
ObjectiveLimit 宽容的目标函数值。如果计算目标函数值小于可行点ObjectiveLimit,该算法停止。 标量值的两倍。默认是
OutputFcn 输出函数来解决进展报告或解决。看到输出函数 函数名、函数处理或单元阵列函数名或处理。默认是[]
PlotFcn

情节功能显示解决进展或停止解决者。看到绘制函数

函数名、函数处理或单元阵列函数名或处理。内置的绘图函数是:

  • “optimplotfvalconstr”(默认)——情节最好的可行的目标函数值发现作为一个阴谋。如果没有目标函数、情节的最大非线性约束违反的阴谋。

    • 情节不可行点红色和可行点显示为蓝色。

    • 如果没有目标函数,情节标题显示了许多可行的解决方案。金宝搏官方网站

  • “optimplotfval”——情节最好的目标函数值发现作为一个阴谋。

  • “optimplotx”——画出最佳解决方案发现作为一个条形图。

  • “surrogateoptplot”——情节每个迭代的目标函数值,显示阶段的算法产生的价值和最好的发现在这个阶段和整体价值。看到解释surrogateoptplot

UseParallel

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

你不能指定UseParallel = trueUseVectorized = true。如果您设置真正的解决,忽略了UseVectorized并尝试使用并行池并行计算,如果可能的话。

布尔。默认是。算法细节,请参阅并行surrogateopt算法
UseVectorized

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

你不能指定UseParallel = trueUseVectorized = 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 .Fval (x),目标函数值x(如果这个值存在)。

原因surrogateopt停止,返回的整型值表中描述的一样。

出口标志 描述

10

问题有独特的可行解决方案由于下列之一:

  • 所有的上界乌兰巴托下界是相等的

  • 线性等式约束Aeq * x =说真的点和边界有一个独特的解决方案。

surrogateopt没有执行任何可行点和函数返回值的优化。

3 找到可行点。解算器停止是因为继续发现新的可行点太少。

1

目标函数值小于options.ObjectiveLimit。这个出口标志优先于退出旗10当适用。

0

的数量超过功能评估options.MaxFunctionEvaluations或者运行时间超过options.MaxTime。如果非线性不等式问题,解决方案是可行的。

1

优化输出函数或终止的情节功能。

2

没有找到可行的点由于下列之一:

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

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

  • 如果存在,线性和整数约束是不可行的范围。在这种情况下,surrogateopt返回x = []fval = []

  • 整数,范围和线性约束是可行的,但没有找到可行解和非线性约束。在这种情况下,x是点最小最大非线性约束的不可行性,然后呢.Fval fval = objconstr (x)

优化过程的信息,作为结构返回这些字段:

  • funccount- - - - - -总数量评估函数。

  • elapsedtime——运行时间解决者在几秒钟内,作为衡量抽搐/toc

  • 消息——为什么算法停止。

  • constrviolation——最大非线性约束违反。constrviolation = max (output.ineq)

  • ineq——非线性不等式约束值的解决方案x。如果objconstr返回一个结构ineq=objconstr .Ineq (x)。否则,ineq是空的。

  • rngstate——MATLAB随机数发生器的状态就在算法开始。使用这个字段复制你的结果。看到复制的结果,讨论了使用rngstate遗传算法

点进行评估,作为结构返回这些字段:

  • X——矩阵据nvar列,据nvar的长度是乌兰巴托。每一行的X代表一个点评价surrogateopt

  • Fval——列向量,其中每个条目对应的目标函数值的行X

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

试用结构有相同的形式options.InitialPoints结构。所以,你可以继续优化通过试用结构的InitialPoints选择。

算法

surrogateopt重复执行这些步骤:

  1. 创建一组试验取样点MinSurrogatePoints随机点范围内,计算目标函数在审判点。

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

  3. 创建一个价值函数,给代理一些体重和减肥点的距离试验。找到一个小价值的价值函数通过随机抽样价值函数在周边地区现任点(最好点发现自从上次代理重置)。使用这一点,称为自适应点,作为一个新的审判。

  4. 评估目标自适应点,并更新代理基于这一点和它的价值。数“成功”,如果目标函数值是足够低于前最好(最低)值,并计算“失败”。

  5. 更新样品的分散分布向上如果发生三次成功过马克斯(据nvar, 5)失败,据nvar是尺寸的数量。更新向下分散马克斯(据nvar, 5)故障发生前三的成功。

  6. 继续从第3步,直到所有试验内点MinSampleDistance的评价点。当时,重置代理通过丢弃所有自适应分代理,重置规模,回到步骤1MinSurrogatePoints新的随机试验分评价。

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

选择功能

应用程序

优化住编辑任务提供了一个可视化界面surrogateopt

扩展功能

版本历史

介绍了R2018b