要控制代理优化算法,请使用以下选项。
ConstraintTolerance
—不使用约束公差作为停止准则。它被用来确定关于非线性约束的可行性。当公差被满足时max(fun(x).Ineq) <=约束容忍
,否则即违反。默认值为1 e - 3
.
InitialPoints
-用两种方法之一指定初始点。
矩阵-矩阵的每一行表示一个初始点。每行的长度与边界内的元素数量相同磅
或乌兰巴托
.行数是任意的。surrogateopt
使用所有行来构造初始代理。如果小于MinSurrogatePoints
行,然后surrogateopt
生成剩余的初始点。surrogateopt
在每个初始点处计算目标函数。
结构——结构包含字段X
还有,可以选择的字段Fval
而且Ineq
.的X
字段包含一个矩阵,其中每行表示一个初始点。的Fval
字段包含一个向量,表示中每个点的目标函数值X
.通过Fval
节省求解器的时间,否则求解器将在每个初始点计算目标函数值。的Ineq
字段包含一个包含非线性不等式约束值的矩阵。每行Ineq
表示一个初始点,每一列表示该点的非线性约束函数值。通过Ineq
节省求解器的时间,否则求解器将在每个初始点计算约束函数值。
MinSurrogatePoints
-用于构造代理的初始点的数量。较大的值会导致更准确的完成代理,但需要更多的时间来完成代理。surrogateopt
在每次切换到随机生成阶段后创建这个数量的随机点。看到代理优化算法.
当BatchUpdateInterval
> 1,用于创建代理的最小随机抽样点的数量是其中较大的MinSurrogatePoints
而且BatchUpdateInterval
.
MinSampleDistance
-该选项控制算法的两个方面。
在估计代理的最小值阶段,算法生成随机点,在这些点上对代理进行评估。如果这些点中的任何一个比MinSampleDistance
到目标函数值被求出的任意先前点,则surrogateopt
丢弃新生成的点,不计算它们。
如果surrogateopt
丢弃所有随机点,然后它不尝试最小化代理,而是切换到随机生成阶段。如果surrogateoptplot
绘图函数正在运行,然后它用蓝色垂直线标记此开关。
BatchUpdateInterval
-该选项控制算法的三个方面:
更新代理之前的函数求值次数。
向量化评估中要通过的点数。当UseVectorized
是真正的
,surrogateopt
传递一个大小的矩阵BatchUpdateInterval
——- - - - - -据nvar
,在那里据nvar
是问题变量的数量。矩阵的每一行表示一个评估点。对于最后的迭代(导致MaxFunctionEvaluations
函数计算),如果MaxFunctionEvaluations
不是整数的倍数BatchUpdateInterval
,surrogateopt
传递一个小于的矩阵BatchUpdateInterval
行。
当BatchUpdateInterval
> 1,用于创建代理的最小随机抽样点的数量是其中较大的MinSurrogatePoints
而且BatchUpdateInterval
.
输出函数和绘图函数在每批评估完成后更新。
详细信息请参见代理优化算法.
通常,算法只有在达到求解器选项中设置的限制时才会停止。此外,绘图函数或输出函数可以停止求解器。
停止选项 | 停止测试 | 出口标志 |
---|---|---|
MaxFunctionEvaluations |
求解器在完成后停止 |
0 |
MaxTime |
求解器在到达后停止MaxTime 从优化开始的秒数,用抽搐 /toc .求解器不会中断正在进行的函数求值,因此实际计算时间可能会超过MaxTime . |
0 |
ObjectiveLimit |
如果解算器得到的目标函数值小于ObjectiveLimit . |
1 |
OutputFcn 或PlotFcn |
一个OutputFcn 或PlotFcn 可以停止迭代。 |
-1 |
界限磅 而且乌兰巴托 |
如果一个条目磅 超过相应的条目乌兰巴托 ,解算器停止,因为边界不一致。 |
-2 |
设置显示
选项来控制surrogateopt
返回命令行。
“最后一次”
—只返回退出消息。这是默认行为。
“通路”
—返回迭代显示。
“关闭”
或等价的“没有”
—不显示命令行。
使用迭代显示,求解器以表格格式返回以下信息。
F-count
-功能评估次数
时间(年代)
-时间以秒为单位,自求解器开始
最好Fval
-获得的最低目标函数值
当前Fval
-最新目标函数值
试验类型
-算法给出评估点,或者随机
或自适应
.详细信息请参见代理优化算法.
当目标函数返回非线性约束时,的迭代显示最好Fval
而且当前Fval
的变化。相反,标题是最好的
而且当前的
,每个显示两列,(Fval Infeas)
.
当一个点是可行的,surrogateopt
显示函数值,并显示-
作为不可行性。
当一个点不可行时,surrogateopt
显示所有非线性约束函数(正数)的最大不可行性,并显示-
作为函数值。
一次surrogateopt
找到一个可行点,在后续的条目中最好的
列仅显示找到的最小函数值,并显示-
作为最好的不可能。
通过迭代显示,求解器还会在表之前返回问题信息:
变量数量
目标函数的类型(标量或无)
不平等的数量
输出函数可以在每次迭代中停止求解器或执行计算。要包含输出函数,请设置OutputFcn
选项@myoutputfcn
,在那里myoutputfcn
是具有下一段中描述的语法的函数。的输出函数的语法与优化工具箱™输出函数的语法相同,但是具有不同的含义x
而且optimValues
参数。有关这些输出函数的信息,请参见输出函数和图函数语法.有关输出函数的示例,请参见使用自定义输出函数的整数优化.
输出函数的语法是:
stop = outfun(x,optimValues,state)
surrogateopt
传递的值x
,optimValues
,状态
到输出函数(outfun
(在本例中)。输出函数返回停止
,布尔值(真正的
或假
),表示是否停止surrogateopt
.
x
-输入参数x
是目前找到的最佳点,表示目标函数值最低的点。
optimValues
- input参数是一个包含以下字段的结构。有关这些字段的详细信息,请参见代理优化算法.
optimValues
结构
字段名 | 内容 |
---|---|
constrviolation |
最佳点的最大约束违反,马克斯(optimValues.ineq) |
currentConstrviolation |
最大约束违反当前点,马克斯(optimValues.currentIneq) |
currentFlag |
当前点是如何创建的。
|
currentFval |
当前点的目标函数值 |
currentIneq |
当前点的约束违反向量,有趣(currentX)。Ineq |
currentX |
当前点 |
elapsedtime |
从解算器启动到现在的秒数 |
国旗 |
最佳点是如何产生的
|
funccount |
目标函数评价的总数 |
fval |
遇到的最低目标函数值 |
incumbentConstrviolation |
最大约束违反当前点,马克斯(optimValues.incumbentIneq) |
incumbentIneq |
在位点的约束违反向量,有趣(incumbentX)。Ineq |
incumbentFlag |
当前点是如何创建的
|
incumbentFval |
目标函数值在当前点 |
incumbentX |
在位点,是指自上次相移到随机抽样后发现的最佳点 |
ineq |
最佳点的约束违反向量,有趣的(x)。Ineq |
迭代 |
一样 |
surrogateReset |
布尔值,表示当前迭代重置模型并切换到随机抽样 |
surrogateResetCount |
总次数 |
状态
-此输入参数是算法的状态,指定为以下值之一。
“init”
—算法处于第一次迭代前的初始状态。当算法处于此状态时,您可以设置绘图轴或其他数据结构或打开文件。
请注意
当状态
是“init”
,输入参数x
而且optimValues.fval
均为空([]
),因为surrogateopt
为耗时的目标函数设计,因此在调用初始化步骤之前不会计算目标函数。
“通路”
-算法只是对目标函数进行了评估。当算法处于此状态时,您将执行大多数计算并查看大多数显示。
“完成”
-算法对最终目标函数求值。当算法处于此状态时,您可以关闭文件、完成绘图或以其他方式准备surrogateopt
停止。
绘图函数在每次迭代中显示信息。您可以通过单击图上的按钮来暂停或停止求解器。若要包含绘图函数,请设置PlotFcn
用于绘制函数的函数名或函数句柄或函数名或句柄的单元格数组的选项。四个内置的绘图函数是:
“optimplotfvalconstr”
(默认)-以折线图的形式绘制最佳可行目标函数值。如果不存在目标函数,则将非线性约束最大违例点绘制成线形图。
图中红色表示不可行点,蓝色表示可行点。
如果没有目标函数,图标题显示可行解的数量。万博 尤文图斯
“optimplotfval”
-显示最佳函数值。如果不选择绘图函数,surrogateopt
使用@optimplotfval
.
“optimplotx”
-显示作为条形图发现的最佳点。
“surrogateoptplot”
-显示当前目标函数值、最佳函数值和算法阶段信息。看到解释surrogateoptplot.
类的语法编写自定义绘图函数输出函数.例如,检查的代码surrogateoptplot
通过输入类型surrogateoptplot
在MATLAB中®命令行。
当你设置UseParallel
选项真正的
,surrogateopt
并行计算。并行计算需要并行计算工具箱™许可证。详细信息请参见代理优化算法.
你不能同时指定两者UseParallel = true
而且UseVectorized = true
.如果你把两者都设为真正的
,解算器忽略UseVectorized
如果可能的话,尝试使用并行池进行并行计算。
当你设置UseVectorized
选项真正的
,surrogateopt
将一个矩阵传递给目标函数。矩阵的每一行表示一个要计算的点。矩阵有选项。BatchUpdateInterval
行;然而,在最后的迭代中,矩阵可以有更少的行。将此选项用于自定义并行计算,如面向自定义并行仿真的矢量代理优化.
你不能同时指定两者UseParallel = true
而且UseVectorized = true
.如果你把两者都设为真正的
,解算器忽略UseVectorized
如果可能的话,尝试使用并行池进行并行计算。
方法设置检查点文件的名称时CheckpointFile
选项,surrogateopt
在每次迭代后将数据写入文件,这使函数能够从当前状态恢复优化。当重新启动,surrogateopt
不评估目标函数值在先前评估点。
检查点文件可以是文件路径,例如“C: \ \ MATLAB \ check1.mat文件”
或者文件名,例如“checkpoint1June2019.mat”
.如果指定的文件名不带路径,surrogateopt
将检查点文件保存在当前文件夹中。
恢复优化时,只能修改以下选项:
BatchUpdateInterval
CheckpointFile
显示
MaxFunctionEvaluations
MaxTime
MinSurrogatePoints
ObjectiveLimit
OutputFcn
PlotFcn
UseParallel
UseVectorized
若要从检查点文件恢复优化,请调用surrogateopt
将文件名作为第一个参数。
[x,fval,exitflag,output] =“check1.mat”)
若要使用新选项恢复优化,请将新选项作为第二个参数。
Opts = optimoptions(选项,“MaxFunctionEvaluations”, 500);[x,fval,exitflag,output] =“check1.mat”选择)
重启过程中,surrogateopt
基于原始函数的计算,运行任何输出函数和绘图函数。例如,您可以基于已经运行的优化创建不同的图。看到使用检查点文件.
请注意
surrogateopt
不在检查点文件中保存状态的所有详细信息。因此,后续迭代可能不同于求解器在未停留在检查点状态时所进行的迭代。
请注意
检查点需要时间。对于那些不需要花费太多时间来计算的函数,这种开销尤其明显。
警告
不要继续surrogateopt
使用不同的MATLAB版本创建的检查点文件。surrogateopt
可以抛出错误或给出不一致的结果。