主要内容

代理优化选项

算法控制

要控制代理优化算法,请使用以下选项。

  • 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不是整数的倍数BatchUpdateIntervalsurrogateopt传递一个小于的矩阵BatchUpdateInterval行。

    • BatchUpdateInterval> 1,用于创建代理的最小随机抽样点的数量是其中较大的MinSurrogatePoints而且BatchUpdateInterval

    输出函数和绘图函数在每批评估完成后更新。

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

停止条件

通常,算法只有在达到求解器选项中设置的限制时才会停止。此外,绘图函数或输出函数可以停止求解器。

停止选项 停止测试 出口标志
MaxFunctionEvaluations

求解器在完成后停止MaxFunctionEvaluations功能评估。在并行计算时,求解器在一个worker返回最终函数求值后停止所有worker,留下一些不完整和未使用的计算。

0
MaxTime 求解器在到达后停止MaxTime从优化开始的秒数,用抽搐/toc.求解器不会中断正在进行的函数求值,因此实际计算时间可能会超过MaxTime 0
ObjectiveLimit 如果解算器得到的目标函数值小于ObjectiveLimit 1
OutputFcnPlotFcn 一个OutputFcnPlotFcn可以停止迭代。 -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传递的值xoptimValues,状态到输出函数(outfun(在本例中)。输出函数返回停止,布尔值(真正的),表示是否停止surrogateopt

  • x-输入参数x是目前找到的最佳点,表示目标函数值最低的点。

  • optimValues- input参数是一个包含以下字段的结构。有关这些字段的详细信息,请参见代理优化算法

optimValues结构

字段名 内容
constrviolation 最佳点的最大约束违反,马克斯(optimValues.ineq)
currentConstrviolation 最大约束违反当前点,马克斯(optimValues.currentIneq)
currentFlag

当前点是如何创建的。

  • “初始”-初始点传入选项。InitialPoints

  • “随机”-范围内随机抽样

  • “自适应”-求解器试图最小化代理的结果

currentFval

当前点的目标函数值

currentIneq 当前点的约束违反向量,有趣(currentX)。Ineq
currentX

当前点

elapsedtime

从解算器启动到现在的秒数

国旗

最佳点是如何产生的

  • “初始”-初始点传入选项。InitialPoints

  • “随机”-范围内随机抽样

  • “自适应”-求解器试图最小化代理的结果

funccount

目标函数评价的总数

fval

遇到的最低目标函数值

incumbentConstrviolation 最大约束违反当前点,马克斯(optimValues.incumbentIneq)
incumbentIneq 在位点的约束违反向量,有趣(incumbentX)。Ineq
incumbentFlag

当前点是如何创建的

  • “初始”-初始点传入选项。InitialPoints

  • “随机”-范围内随机抽样

  • “自适应”-求解器试图最小化代理的结果

incumbentFval

目标函数值在当前点

incumbentX

在位点,是指自上次相移到随机抽样后发现的最佳点

ineq 最佳点的约束违反向量,有趣的(x)。Ineq
迭代

一样funccount;允许surrogateopt使用与其他求解器相同的绘图函数

surrogateReset

布尔值,表示当前迭代重置模型并切换到随机抽样

surrogateResetCount

总次数surrogateReset真正的

  • 状态-此输入参数是算法的状态,指定为以下值之一。

    • “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可以抛出错误或给出不一致的结果。

另请参阅

相关的话题