主要内容

代理选择

替代优化全球最小化耗时的客观函数

描述

代理选择是一个全局求解器,用于求解耗时的目标函数。

代理选择试图解决表格的问题

x F ( x ) 这样 { x UB. A. · x B Aeq · x = 说真的 C ( x ) 0 x 整数 Intcon.

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

实例

x=代理选项(objconstr,,UB.)搜索全局最小值objconstr(x)在该地区lb<=x<=ub.如果objconstr(x)返回一个结构,然后代理选择搜索的最小值objconstr(x).Fval,objconstr(x).ineq <= 0

请注意

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

实例

x=代理选项(objconstr,,UB.,Intcon.)要求所列的变量Intcon.取整数值。

实例

x=代理选项(objconstr,,UB.,Intcon.,A.,B,Aeq,说真的)需要解决这个问题x满足不等式A * x < =与平等Aeq*x=beq.如果不存在不等式,则设置a = []b = []. 同样,如果不存在等式,则设置Aeq=[]beq=[]

实例

x=代理选项(___,选项)中的选项修改搜索过程选项.指定选项在前一个语法中遵循任何输入参数组合。

实例

x=代理选项(问题)搜索最低限度问题,描述的结构问题

实例

x=代理选项(检查点文件)从保存的检查点文件中的状态继续运行优化。看到使用检查点文件

实例

x=代理选项(检查点文件,选择)继续从已保存的检查点文件中的状态运行优化,并替换选项检查点文件有人在选择.看到检查点文件

实例

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

实例

[x,fval,出口滞后,输出) = surrogateopt (___)还返回出口滞后,一个描述解算器停止的原因的整数输出,一个描述优化过程的结构。

实例

[x,fval,出口滞后,输出,审判) = surrogateopt (___)还返回包含所有评估点和这些点的目标函数值的结构。

例子

全部折叠

在区域内寻找六峰驼背函数的最小值-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)

Figure Optimization Plot Function包含一个axes对象。标题为最佳函数值:-1.03163的axes对象包含一个line类型的对象。该对象表示最佳函数值。

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;

称呼代理选择每个组件的下界为0,上界为2/3。

lb = [0,0];UB = [2/3,2 / 3];[x,fval,ExitFlag] = TrustogateOpt(@ Objconstr,LB,UB)

图优化Plot函数包含一个轴对象。标题为Best Function Value: 0.119659的轴对象包含2个类型为line的对象。这些对象代表最佳函数值(不可行的)、最佳函数值。

surrogateopt停止,因为它超过了'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)

图优化Plot函数包含一个轴对象。标题为Best Function Value: -1.91774的axis对象包含一个类型为line的对象。该对象表示最佳函数值。

surrogateopt停止,因为它超过了'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];乌兰巴托=磅;[XPTS,YPTS] = MeshGrid(-3:3);startpls = [xpts(:),YPTS(:)];选择= optimoptions (“surrogateopt”,“PlotFcn”,“surrogateoptplot”,...“InitialPoints”startpts,“MaxFunctionEvaluations”, 120);x = surrogateopt (objconstr、磅、乌兰巴托、期权)

图优化Plot函数包含一个轴对象。轴对象与标题最佳:-1.03163现任:-0.124304电流:-0.124304包含6个对象的类型线。这些对象代表最佳,在职,初始样本,自适应样本,随机样本,替代重置。

surrogateopt停止,因为它超过了'options.MaxFunctionEvaluations'设置的函数求值限制。
X =1×2-0.0904 - 0.7127

最小化受线性不等式约束的非线性目标函数。最小化200次函数计算。

objconstr = @multirosenbrock;据nvar = 6;磅= 2 *的(据nvar, 1);乌兰巴托=磅;intcon = [];据nvar = 1 (1);b = 3;Aeq = [];说真的= [];选择= optimoptions (“surrogateopt”,“MaxFunctionEvaluations”, 200);[溶胶,fval exitflag、输出]=...代理选项(objconstr、lb、ub、intcon、A、b、Aeq、beq、选项)

图优化Plot函数包含一个轴对象。具有标题最佳函数值的轴对象:2.06444包含类型线的对象。该对象表示最佳函数值。

surrogateopt停止,因为它超过了'options.MaxFunctionEvaluations'设置的函数求值限制。
索尔=1×60.1404 0.0203 0.3112 0.1215 0.1271 0.0329
fval = 2.0644
exitflag = 0
输出=带字段的结构:Elapsedtime:19.0752 Funccount:200 ConnabRimation:0 Ineq:[1x0 Double] RngState:[1x1 struct]消息:'TrustogateOpt停止,因为它超过了...'所设置的函数评估限制

创建一个问题结构,代表该区域的六驼驼背函数-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(“surrogateopt”,“MaxFunctionEvaluations”,120);问题=结构(“目标”objconstr,...“磅”,[-2.1,-2.1],...'UB',[2.1,2.1],...“选项”,选项,...“规划求解”,“surrogateopt”);x = trustogateopt(问题)

Figure Optimization Plot Function包含一个axes对象。标题为最佳函数值:-1.03163的axes对象包含一个line类型的对象。该对象表示最佳函数值。

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]=代理选项(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 (“surrogateopt”,“PlotFcn”,“surrogateoptplot”);[x, fval exitflag、输出]= surrogateopt (objconstr、磅、乌兰巴托、期权)

图优化Plot函数包含一个轴对象。轴对象与标题最佳:-1.03163现任:0.750489当前:12.2879包含6个对象的类型行。这些对象代表最佳,在职,随机样本,自适应样本,替代重置。

surrogateopt停止,因为它超过了'options.MaxFunctionEvaluations'设置的函数求值限制。
X =1×20.0895 -0.7130
fval = -1.0316.
exitflag = 0
输出=带字段的结构:Elapsedtime:45.0007 Funccount:200 Cankerviolation:0 Ineq:[1x0 Double] RngState:[1x1 struct]消息:'Trustogateopt停止,因为它超过了...'设定的函数评估限制

通过设置一个很小的函数求值的最大数目,快速结束代理优化。为了准备重新启动优化的可能性,请求所有解算器输出。

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

Figure Optimization Plot函数包含一个轴对象。标题为最佳功能值:-0.124304的轴对象包含类型为line的对象。此对象表示最佳函数值。

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

从先前评估的点开始,再优化20次功能评估。

选项。初始点=审判; [x,fval,exitflag,output,trials] = surrogateopt(objconstr,lb,ub,options);

图优化Plot函数包含一个轴对象。标题为Best Function Value: -0.99861的轴对象包含一个类型为line的对象。该对象表示最佳函数值。

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;lb=[-2.1,-2.1];ub=-lb;opts.MaxFunctionEvaluations=30;[x,fval,exitflag,output]=代理选项(objconstr,lb,ub,opts)

Trustogateopt停止,因为它超出了“选项”QuaxFunctioneValuations'设置的函数评估限制。
X =1×20.0067 -0.7343
fval = -0.9986.
exitflag = 0
输出=带字段的结构:[1×0 double] rngstate: [1×1 struct] message: 'Surrogateopt停止,因为它超过了↵'options. maxfunctionevalues '设置的函数求值限制。'

设置选项以使用100个函数评估(这意味着比已经完成的多70个),然后重新启动优化。

opts.maxfunctionevaluations = 100;[X2,FVAL2,EXITFLAG2,OUTPUT2] = TREROGATEOPT('checkfile.mat',选择)

Trustogateopt停止,因为它超出了“选项”QuaxFunctioneValuations'设置的函数评估限制。
x2 =1×20.0895 -0.7130
fval2=-1.0316
exitflag2 = 0
output2 =带字段的结构:[1×0 double] rngstate: [1×1 struct] message: 'Surrogateopt停止,因为它超过了↵'options. maxfunctionevalues '设置的函数求值限制。'

输入参数

全部折叠

目标函数和非线性约束,指定为函数句柄或函数名称。objconstr接受单个参数x,在那里x通常是行矢量。但是,当矢量化选择是真的,x是一个包含options.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)fval列向量是options.batchupdateinterval.条目(或更少用于最后函数评估BatchUpdateInterval并不是平均分配最大函数求值).

  • 具有向量项的结构。如果结构包含该字段Fval,然后代理选择尽量减少objconstr(x).Fval, 和objconstr(x).Fval向量的长度是多少BatchUpdateInterval(或更少)。如果结构包含该字段Ineq,然后代理选择尝试使该字段非呈现的所有组件:objconstr(x).ineq <= 0对于所有的条目,并且objconstr(x).Ineq包含多达BatchUpdateInterval参赛作品。

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

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

数据类型:功能手柄|字符|字符串

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

谨慎

虽然对于大多数求解器是可选的,是的必需输入代理选择

请注意

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

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

数据类型:

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

谨慎

虽然UB.对于大多数求解器是可选的,UB.是的必需输入代理选择

请注意

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

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

数据类型:

整数变量,指定为具有以下值的正整数向量1.到问题变量的数量。每个值在Intcon.代表一个x整数值组件。

例子:指定偶数条目x是整数值,Intcon.据nvar 2:2:

数据类型:

线性不等式约束,指定为实矩阵。A.是一个M——- - - - - -据nvar矩阵,M是不等式的个数。

A.编码M线性不等式

A * x < =,

在哪里x是栏矢量据nvar变量x (:), 和B列向量是M元素。

例如,指定

x1.+ 2x2.≤ 10
3.x1.+ 4x2.≤ 20
5.x1.+ 6x2.≤30日

给这些约束:

a = [1,2; 3,4; 5,6];B = [10; 20; 30];

例子:要指定控制变量的和为1或更小,请给出约束条件一个= 1 (1,N)b=1

数据类型:

线性不等式约束,指定为实向量。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日

给这些约束:

a = [1,2; 3,4; 5,6];B = [10; 20; 30];

例子:要指定控制变量的和为1或更小,请给出约束条件一个= 1 (1,N)b=1

数据类型:

线性等式约束,指定为实矩阵。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是大小的矩阵MEQ.——- - - - - -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
  • 更新代理项之前的函数求值次数。

  • 在向量化计算中要通过的点数。当UseVectorized真的,代理选择传递一个大小矩阵BatchUpdateInterval——- - - - - -nvar,在那里nvar为问题变量的数量。矩阵的每一行代表一个评估点。输出函数和绘图函数在每个批处理完成后更新。

正整数。默认是1.

检查点文件

用于检查点和重新启动优化的文件名。该文件包含。垫数据类型。看到使用检查点文件

检查点是需要时间的。这种开销对于那些需要很少时间计算的函数来说尤其明显。

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

ConstraintTolerance 非线性约束公差,测量为所有非线性约束函数值的最大值,正值表示违反。该公差为绝对(非相对)公差;看见公差和停止标准 正标量。默认是1e-3
展示

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

  • “决赛”(默认) - 在迭代结束时退出消息。

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

  • “国际热核实验堆”-迭代显示;看见命令行显示

InitialPoints 解算器的初始点。

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

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

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

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

最大函数求值

目标函数计算的最大次数,一个停止准则。

正整数。默认是最大值(200,50*nvar),在那里nvar为问题变量的数量。
MaxTime 最大运行时间(秒)。实际运行时间可以超过MaxTime由于评估目标函数所需的时间或并行处理延迟。 正标量。默认是Inf
MinSampleDistance 自适应采样器产生的试验点之间的最小距离。看到代理优化算法 正标量。默认是1e-3
minsurrogatePoints.

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

BatchUpdateInterval> 1,用于创建代理的随机抽样点的最小数目是较大的minsurrogatePoints.BatchUpdateInterval

至少是整数nvar+ 1。默认是最大(20,2 * NVAR),在那里nvar为问题变量的数量。
客观限度 目标函数值的容差。如果可行点的计算目标函数值小于客观限度,算法停止。 标量值的两倍。默认是
输出FCN 输出函数报告求解程序的进度或停止求解程序。看到输出函数 函数名、函数句柄或函数名或句柄的单元格数组。默认是[]
绘图仪

打印函数以显示解算器进度或停止解算器。请参阅绘图函数

函数名、函数句柄或函数名或句柄的单元格数组。内置绘图功能是:

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

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

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

  • “最佳普罗夫瓦尔”- 绘制作为线绘图的最佳目标函数值。

  • “optimplotx”将找到的最佳解决方案绘制成条形图。

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

UseParallel

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

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

布尔。默认是.对于算法详细信息,请参阅并行Trustogateopt算法
UseVectorized

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

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

布尔。默认是。有关示例,请参阅定制并行仿真的矢量化代理优化

例子:options=options('subrogateopt'、'Display'、'iter'、'UseParallel',true)

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

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

  • 的下界x

  • UB.-的上界x

  • 解算器“surrogateopt”

  • 艾奈克-线性不等式约束矩阵(可选)

  • Bineq.线性不等式约束向量(可选)

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

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

  • 选项-使用最佳选择

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

  • Intcon.-指定整数值的字段x组件(可选)

请注意

这些问题需要字段:客观的,,UB.,解算器, 和选项

数据类型:结构

检查点文件的路径,指定为字符串或字符向量。检查点文件具有。垫扩展。如果你指定了一个没有路径的文件名,代理选择使用当前文件夹中的检查点文件。

检查点文件存储用于恢复优化的优化状态。代理选择在每次函数求值时更新检查点文件,这样即使在代理选择过早停止。有关示例,请参阅从检查点文件重新启动代理优化

代理选择当检查点文件具有有效的检查点文件选择。

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

检查点文件中的数据在。垫总体安排为避免错误或其他意外结果,请在调用之前不要修改数据代理选择

警告

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

例子:'checkfile.mat'

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

数据类型:字符|字符串

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

  • BatchUpdateInterval

  • 检查点文件

  • 展示

  • 最大函数求值

  • MaxTime

  • minsurrogatePoints.

  • 客观限度

  • 输出FCN

  • 绘图仪

  • UseParallel

  • UseVectorized

例子:opts = Optimoptions(选项,'MaxFunctionEvaluations',400);

输出参数

全部折叠

解决方案,作为真正的矢量返回。x长度和UB.

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

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

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

原因代理选择已停止,作为此表中描述的整数值之一返回。

出口标志 描述

10.

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

  • 所有上界UB.等于下限

  • 线性等式约束Aeq*x=beq并且边界有一个唯一的解决方案点。

代理选择返回可行点和函数值,而不执行任何优化。

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

1.

目标函数值小于options.ObjectiveLimit.此退出标志优先于退出标志10.何时适用。

0

函数求值的次数超过options.MaxFunctionEvaluations或经过的时间超过options.MaxTime.如果问题有非线性不等式,解是可行的。

-1

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

-2

由于以下原因之一,未找到可行点:

  • 一个下界磅(一)超过相应的上界乌兰巴托(我).或一个或多个ceil(磅(一))超过相应的地板(乌兰巴托(i))因为我在Intcon..在这种情况下,代理选择返回x = []fval = []

  • lb=ub重点是什么是不可行的。在这种情况下,x =磅, 和fval=objconstr(x).fval

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

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

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

  • Funccount.—函数求值的总数。

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

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

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

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

  • rngstate.- 刚刚在算法开始之前的MATLAB随机数发生器的状态。使用此字段重现结果。看到复制的结果,讨论了使用rngstate.遗传算法

评估积分,作为具有这些字段的结构返回:

  • X——矩阵据nvar列,据nvar长度是多少或者UB..每一行的X表示由计算得出的一个点代理选择

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

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

这个审判结构有相同的形式选项。初始点结构。所以,你可以通过传递审判结构如图所示InitialPoints选择。

算法

代理选择重复执行以下步骤:

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

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

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

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

  5. 如果之前三次成功,则向上更新样本分布的离散度马克斯(据nvar, 5)失败,在哪里nvar是维数。更新向下散布如果马克斯(据nvar, 5)失败先于成功。

  6. 从步骤3继续,直到所有试验点都在MinSampleDistance计算的点数。此时,通过丢弃代理的所有自适应点来重置代理,重置比例,然后回到第1步创建minsurrogatePoints.新的随机测试点用于评估。

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

选择功能

应用程序

这个优化实时编辑器任务为代理选择

扩展能力

在R2018b中引入