surrogateopt

对于耗时的目标函数的全局极小替代优化

描述

surrogateopt功能是耗时的目标函数的全局解算器。

surrogateopt试图解决的形式的问题

x f ( x ) 这样 { x UB c ( x ) 0 x 整数, INTCON

该求解器在多维空间中搜索实值目标函数的全局最小值,满足有界约束、可选整数约束和可选非线性不等式约束。surrogateopt最适合于需要很长的时间来评估目标函数。目标函数可以非光滑。求解器需要对所有变量的有限范围。求解器可以选择保持一个检查点文件符合停机条件后,能够从崩溃或部分执行,或优化持续复苏。

例子

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

请注意

传递额外的参数(优化工具箱)解释了如何额外的参数,传递给目标函数,如果必要的。

例子

x= surrogateopt (objconstr,,UB,INTCON)要求变量中列出INTCON取整数值。

例子

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

例子

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

例子

x= surrogateopt (checkpointFile)在保存的检查点文件中从状态继续运行优化。看到与保点工作文件

例子

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

例子

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

例子

(x,fval,exitflag,产量] = surrogateopt(___)也回报exitflag,描述解算器停止原因的整数,产量,一个描述优化过程的结构。

例子

(x,fval,exitflag,产量,试用] = 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,LB,UB)

Surrogateopt停止,因为它超过了“options.MaxFunctionEvaluations”功能评价极限集。
X =1×20.0895 - -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)^ 2 +(X(2)-1/3)^ 2  - (1/3)^ 2;

呼叫surrogateopt使用0下界和每个组件上的2/3的上限。

LB = [0,0];UB = [2 / 3,2 / 3];[X,FVAL,exitflag] = surrogateopt(@ objconstr,LB,UB)

Surrogateopt停止,因为它超过了“options.MaxFunctionEvaluations”功能评价极限集。
X =1×20.6541 - 0.4277
FVAL = 0.1197
exitflag = 0

检查解的非线性约束的值。

DISP(objconstr(x)的.Ineq)
6.7195e-04

约束函数值是接近零,表示该约束是在溶液活性。

找出最小的ps_example一个二维变量的函数x它的第一个组件被限制为整数值,所有的组件都在-5和5之间。

INTCON = 1;RNG默认%的再现性objconstr = @ps_example;磅= [-5,-5];UB = [5,5];X = surrogateopt(objconstr,LB,UB,INTCON)

Surrogateopt停止,因为它超过了“options.MaxFunctionEvaluations”功能评价极限集。
X =1×2-5.0000 -0.0005

尽量减少在该地区六驼峰的骆驼回功能-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];乌兰巴托=磅;[Xpts,Ypts] = meshgrid(-3:3);startpts = [Xpts(:),Ypts(:)];选择= optimoptions ('surrogateopt','PlotFcn','surrogateoptplot',...'InitialPoints',startpts,“MaxFunctionEvaluations”,120);x = surrogateopt (objconstr、磅、乌兰巴托、期权)

Surrogateopt停止,因为它超过了“options.MaxFunctionEvaluations”功能评价极限集。
X =1×2-0.0904 0.7127

创建表示该地区的六驼峰的骆驼背功能的结构问题-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],...'UB'[2.1,2.1],...“选项”,期权,...“求解”,'surrogateopt');X = surrogateopt(问题)

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 ('surrogateopt',“显示”,“关”,'PlotFcn',[]);[X,FVAL] = surrogateopt(objconstr,LB,UB,选项)
X =1×20.0895 - -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,LB,UB,选项)

Surrogateopt停止,因为它超过了“options.MaxFunctionEvaluations”功能评价极限集。
X =1×20.0895 - -0.7130
FVAL = -1.0316
exitflag = 0
输出=同场的结构:elapsedtime:46.9309 funccount:200 constrviolation:0 ineq:[1X0双] rngstate:1x1的结构]消息: '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,LB,UB,选项);

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];乌兰巴托=磅;选择。MaxFunctionEvaluations = 30;[x, fval exitflag、输出]= surrogateopt (objconstr、磅、乌兰巴托、选择)

Surrogateopt停止,因为它超过了“options.MaxFunctionEvaluations”功能评价极限集。
X =1×20.0067 - -0.7343
FVAL = -0.9986
exitflag = 0
输出=同场的结构:elapsedtime:11.7528 funccount:30 constrviolation:0 ineq:[1×0双] rngstate:[1×1结构]消息: 'Surrogateopt停止,因为它超过了↵'options.MaxFunctionEvaluations功能评价极限集'”

设置选项使用100分功能的评价(这意味着70多家已经完成),然后重新启动优化。

opts.MaxFunctionEvaluations = 100;[X2,fval2,exitflag2,输出2] = surrogateopt('checkfile.mat',OPTS)

Surrogateopt停止,因为它超过了“options.MaxFunctionEvaluations”功能评价极限集。
x2 =1×20.0895 - -0.7130
fval2 = -1.0316
exitflag2 = 0
输出2 =同场的结构:elapsedtime:64.8767 funccount:100 constrviolation:0 ineq:[1×0双] rngstate:[1×1结构]消息: 'Surrogateopt停止,因为它由↵'options.MaxFunctionEvaluations超出功能评价极限集'”

输入参数

全部收缩

目标函数和非线性约束,指定为函数句柄或函数名。objconstr只接受一个参数x,其中x是一个行向量。objconstr返回下列之一:

  • 真正的标FVAL = objconstr(x)的

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

有关使用非线性约束的示例,请参见解决非线性约束问题,代孕优化与非线性约束解决问题的可行性。之间的转换surrogateopt结构语法和其他求解程序,参见packfcn转换surrogateopt表格及其他求解形式之间的非线性约束

数据类型:function_handle|烧焦|

下界,指定为有限实数向量。表示下界元素xUB。的长度UB必须等于变量的数objconstr接受。

警告

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

请注意

surrogateopt允许等于条目UB。对于每一个INTCON, 你必须有小区(磅(ⅰ))<=地板(UB(i))的。看到建设代孕细节

例:磅= [0;-20;4)手段X(1)≥0,X(2)≥-20,x (3)≥4

数据类型:

上限,指定为有限实数向量。UB以明智的方式表示上界元素xUB。的长度UB必须等于变量的数objconstr接受。

警告

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

请注意

surrogateopt允许等于条目UB。对于每一个INTCON, 你必须有小区(磅(ⅰ))<=地板(UB(i))的。看到建设代孕细节

例:UB = [10; -20; 4]手段X(1)≤10,X(2)≤-20,x (3)≤4

数据类型:

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

例:要指定即使条目x是整数值,设定INTCON据nvar 2:2:

数据类型:

选项,指定为的输出optimoptions

欲了解更多信息,请参阅代孕优化选项

选项 描述
CheckpointFile

文件名设置检查点并重新启动优化。该文件具有。垫数据类型。看到与保点工作文件

检查点需要时间。这个开销是,否则需要一点时间来评估职能尤其引人注目。

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

ConstraintTolerance 公差非线性限制,作为最大所有非线性约束函数值,其中正值表示违反了测定。该公差是一个绝对(而不是相对)容差;看到公差和停止标准(优化工具箱)。 正标量。默认是1E-3
显示

在命令行返回的显示级别。

  • '最后'(默认) - 在迭代结束退出消息。

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

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

InitialPoints 为求解初始点。

矩阵初始点,其中每行是一个点。或者,与现场结构X,它的值是初始点的矩阵,并且这些可选字段:

  • FVAL含在初始点的目标函数的值的向量

  • Ineq含有非线性不等式约束值的矩阵

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

MaxFunctionEvaluations 目标函数评估的最大数量,停止准则。 正整数。默认是马克斯(200年,50 *据nvar),其中据nvar问题是变量的数目。
MaxTime 最大运行时间(秒)。实际运行时间可能超过MaxTime因为所需要的时间来评估目标函数或由于并行处理延迟。 正标量。默认是
MinSampleDistance 由自适应采样器产生的试验点之间的最小距离。看到代理优化算法 正标量。默认是1E-3
MinSurrogatePoints 随机采样点的最低数量,创造以替代创作阶段的开始。看到代理优化算法 整数至少据nvar+ 1.默认是MAX(20,2 * NVAR),其中据nvar问题是变量的数目。
ObjectiveLimit 公差目标函数值。如果计算出的目标函数的值小于ObjectiveLimit,算法停止。 双标值。默认是
OutputFcn 输出功能报告解决程序的进度或停止解决程序。看到输出功能 功能名称,功能手柄,或函数名或手柄的电池阵列。默认是[]
PlotFcn

绘图功能,以显示求解进度或停止求解。看到绘图功能

功能名称,功能手柄,或函数名或手柄的电池阵列。内置情节的功能是:

  • 'optimplotfvalconstr'(默认) - 剧情的最佳可行的目标函数值作为找到一个线图。如果没有目标函数,绘制最大非线性约束违反的线图。

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

    • 如果没有目标函数,则情节标题显示可行解的数量。金宝搏官方网站

  • “optimplotfval”- 绘制发现作为线图的最佳目标函数值。

  • “optimplotx”- 绘制发现条形图的最佳解决方案。

  • 'surrogateoptplot'- 在每一次迭代绘制的目标函数值,示出了该算法的相位产生的值和最佳值发现无论是在此阶段和整体。看到解读surrogateoptplot

UseParallel 布尔值,指示是否计算并行的目标函数值。 布尔。默认是。对于算法的详细信息,请参阅并行算法surrogateopt

例:选项= optimoptions( 'surrogateopt', '显示', 'ITER', 'UseParallel',真)

问题结构,指定为与这些字段的结构:

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

  • - 下界x

  • UB-上界x

  • 求解- - - - - -'surrogateopt'

  • 选项- 选项与创建optimoptions

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

  • INTCON- 可选字段指定的整数值x组件

请注意

在各领域问题除了需要rngstateINTCON

数据类型:结构体

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

检查点文件存储优化的状态恢复的优化。surrogateopt在每个函数求值时更新检查点文件,以便您可以继续优化surrogateopt过早暂停。对于一个示例,请参见从检查点文件重新启动代孕优化

surrogateopt创建检查点文件时,它有一个有效的CheckpointFile选择。

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

在一个检查点文件中的数据是在。垫格式。为了避免错误或其他意外的结果,称之前没有修改数据surrogateopt

警告

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

例:'checkfile.mat'

例:“C:\ Program Files文件\ MATLAB \文档\ checkpointNov2019.mat”

数据类型:烧焦|

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

  • CheckpointFile

  • 显示

  • MaxFunctionEvaluations

  • MaxTime

  • MinSurrogatePoints

  • ObjectiveLimit

  • OutputFcn

  • PlotFcn

  • UseParallel

例:OPTS = optimoptions(选项 'MaxFunctionEvaluations',400);

输出参数

全部收缩

解决方案,返回作为一个真正的载体。x具有长度相同的UB

在该解决方案的目标函数值,返回一个实数。

  • 什么时候objconstr返回一个标,fval是一个标量objconstr(x)的

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

原因surrogateopt停止时,返回在该表中描述的整数值中的一个。

出口标志 描述

10

所有的上界UB都等于下界surrogateopt返回可行点而不执行任何优化。

1

目标函数值小于options.ObjectiveLimit。该出口标志的优先级高于出口标志10当两个应用。

0

函数计算的数量超过options.MaxFunctionEvaluations或经过的时间超过options.MaxTime。如果问题存在非线性不等式,则解是可行的。

-1

通过输出函数或绘图函数终止优化。

-2

没有可行点发现,由于下列情况之一:

  • 一个下界磅(我)超过相应的上限乌兰巴托(我)。在这种情况下,surrogateopt返回X = []fval = []

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

  • 磅<= UB没有可行的解决方案。在这种情况下,x是至少不可行性的点,并FVAL = objconstr(x)的.Fval

关于优化过程的信息,返回与这些领域的结构:

  • funccount- 功能评估的总数。

  • elapsedtime- 跑步时间,以秒为解算器,通过测量抽搐/TOC

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

  • constrviolation- 最大约束冲突,如果有的话。constrviolation = MAX(output.ineq)

  • ineq-不等式在解处的约束值x。如果objconstr返回结构,然后ineq=objconstr .Ineq (x)。除此以外,ineq是空的。

  • rngstate- 就在算法开始前的MATLAB随机数生成器的状态。使用此字段重现你的结果。看到结果重现,讨论如何使用rngstate遗传算法

点评估,返回与这些领域的结构:

  • X——矩阵nvars列,nvars要么UB。每一行的X代表一个点由评价surrogateopt

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

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

试用结构具有与。相同的形式options.InitialPoints结构。因此,可以通过传递试用结构作为InitialPoints选择。

算法

surrogateopt重复执行这些步骤:

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

  2. 通过所有的随机试验点的插值径向基函数创建目标函数的替代模式。

  3. 创建一个价值函数,让一些体重来替代一些重量从审判点的距离。通过随机抽样在围绕现任点的区域中的评价函数(自上次复位替代最佳点发现)找到评价函数的值小。利用这一点,叫做自适应点,作为一个新的试验点。

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

  5. 如果之前有三次成功,则向上更新样本分布的离散度MAX(NVAR,5)失败,据nvar是维数。更新分散,如果向下MAX(NVAR,5)失败发生在三次成功之前。

  6. 从第3步继续,直到所有的试验点内MinSampleDistance求值点的集合。此时,通过丢弃代理中的所有自适应点来重置代理,重置比例,然后回到步骤1来创建MinSurrogatePoints新的随机试验点进行评估。

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

扩展功能

介绍了R2018b