主要内容

代理选择

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

描述

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

代理选择试图解决问题的形式

最小值 x F ( x ) 这样 { x 乌兰巴托 A. · x B Aeq · x = 贝基 C ( x ) 0 x 整数 intcon

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

实例

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

笔记

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

实例

x=代理选项(objconstr,,乌兰巴托,intcon)要求所列的变量intcon取整数值。

实例

x=代理选项(objconstr,,乌兰巴托,intcon,A.,B,Aeq,贝基)需要解决这个问题x满足不等式A * x < =和平等Aeq*x=beq.如果不存在不等式,则设置一个= []b = [].同样,如果不存在等式,则设置Aeq=[]beq=[]

实例

x=代理选项(___,选项)中的选项修改搜索过程选项具体说明选项在前面语法中的任何输入参数组合之后。

实例

x=代理选项(问题)搜索最小值为问题中所描述的结构问题

实例

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

实例

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

实例

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

实例

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

实例

[x,未来值,出口滞后,输出,审判) = 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类型的对象。该对象表示最佳函数值。

代理选项已停止,因为它超出了“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(十)返回结构字段中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。

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

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

代理选项已停止,因为它超出了“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的对象。该对象表示最佳函数值。

代理选项已停止,因为它超出了“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,选项)

Figure Optimization Plot函数包含一个轴对象。标题为Best的轴对象:-1.03163当前:-0.124304当前:-0.124304包含6个线型对象。这些对象表示最佳、现有、初始样本、自适应样本、随机样本和代理重置。

代理选项已停止,因为它超出了“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、选项)

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

代理选项已停止,因为它超出了“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(问题)

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

代理选项已停止,因为它超出了“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、磅、乌兰巴托、期权)

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

代理选项已停止,因为它超出了“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);

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

代理选项已停止,因为它超出了“options.MaxFunctionEvaluations”设置的函数计算限制。

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

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

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

代理选项已停止,因为它超出了“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接受单个参数x,在那里x是一个典型的行向量。然而,当矢量化选择是真正的,x矩阵是否包含选项。BatchUpdateInterval行;每行代表一个要计算的点。objconstr返回下列任意一个:

  • 实标量fval=objconstr(x)

  • 结构。如果结构包含该字段Fval然后代理选择尽量减少objconstr(x).Fval。如果结构包含该字段Ineq然后代理选择试图使该领域的所有组成部分都是非积极的:objconstr(x).Ineq<= 0所有条目。objconstr(x)必须包括FvalIneq字段,或两者都有。代理选择忽略了其他领域。

矢量化选择是真正的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在代理选择形式和其他求解形式之间转换非线性约束有关使用向量化批计算的示例,请参见定制并行仿真的矢量化代理优化

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

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

谨慎

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

笔记

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

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

数据类型:

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

谨慎

虽然乌兰巴托对于大多数解算器是可选的,乌兰巴托是的必需输入代理选择

笔记

代理选择允许相等的条目乌兰巴托.为每一个在里面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,

给出以下约束条件:

= [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,

给出以下约束条件:

= [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矩阵的大小是多少微地震——- - - - - -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.

检查点文件

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

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

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

ConstraintTolerance 非线性约束公差,测量为所有非线性约束函数值的最大值,正值表示违规。此公差为绝对(非相对)公差;请参阅公差和停止标准 积极的标量。默认是1e-3
显示

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

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

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

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

初始点 解算器的初始点。

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

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

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

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

最大函数求值

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

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

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

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

整数至少nvar+ 1。默认是2 *据nvar max(20日),在那里nvar为问题变量的数量。
客观限度 目标函数值的公差。如果可行点的计算目标函数值小于客观限度,算法停止。 双标量值。默认为-Inf
输出FCN 输出函数,用于报告解算器进度或停止解算器。请参阅输出函数 函数名、函数句柄或函数名或句柄的单元格数组。默认是[]
绘图仪

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

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

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

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

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

  • “最佳普罗夫瓦尔”-将找到的最佳目标函数值绘制成线图。

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

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

使用并行

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

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

布尔。默认是错误的.有关算法的细节,请参见并行surrogateopt算法
UseVectorized

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

不能同时指定两者UseParallel = trueUseVectorized = true.如果您将两者都设置为真正的,解算器忽略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);

输出参数

全部崩溃

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

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

  • objconstr返回一个标量,未来值是标量objconstr(x)

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

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

出口标志 描述

10

问题有唯一可行的解决方案,原因如下:

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

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

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

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

1.

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

0

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

-1

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

-2

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

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

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

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

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

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

  • funccount-功能评估的总数。

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

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

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

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

  • rngstate-在算法开始之前,MATLAB随机数生成器的状态。使用此字段重现您的结果。看到复制的结果,其中讨论了使用rngstate对于ga

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

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

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

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

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

算法

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

  1. 通过抽样创建一组试验点MinSurrogatePoints在边界内随机点,并在试验点评估目标函数。

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

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

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

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

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

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

选择功能

应用程序

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

扩展功能

在R2018b中引入