主要内容

代理优化选项

算法控制

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

  • ConstraintTolerance——约束宽容不是作为停止准则。它是用来确定可行性对非线性约束。当公差是满意马克斯(有趣的(x) .Ineq) < = ConstraintTolerance,否则就是违反了。默认值是1 e - 3

  • InitialPoints以两种方式之一——指定初始点。

    • 矩阵,矩阵的每一行表示一个初始点。每一行的长度是一样的元素的数量界限乌兰巴托。的行数是任意的。surrogateopt使用的所有行构造初始代理。如果有不足MinSurrogatePoints行,然后surrogateopt产生剩余的初始点。surrogateopt在每个初始点评估目标函数。

    • 结构的结构包含字段X可选地,字段FvalIneq。的X字段包含一个矩阵中每一行代表一个初始点。的Fval字段包含一个向量代表每个点的目标函数值X。通过Fval节省时间的解算器,否则解决评估目标函数值在每一个初始点。的Ineq字段包含一个包含非线性矩阵不等式约束值。每一行的Ineq代表一个初始点,每一列表示一个非线性约束函数值。通过Ineq节省时间的解算器,否则解决评估约束函数值在每个初始点。

  • MinSurrogatePoints——用于构建代理数量的初始点。较大的值导致更准确的完成代理,但需要更多时间完成代理。surrogateopt创建了这个数量的随机点每次切换到后随机生成阶段。看到代理优化算法

    BatchUpdateInterval> 1,最低数量的随机样本点用于创建一个代理是较大的MinSurrogatePointsBatchUpdateInterval

  • MinSampleDistance——此选项控制算法的两个方面。

    • 在阶段估计代孕的最小值,该算法生成随机点评估代理。如果这些点是拉近MinSampleDistance以前的任何点的目标函数值评估,surrogateopt丢弃新生成的点,不评价。

    • 如果surrogateopt丢弃所有的随机点,然后它不尽量减少代理,相反,切换到随机生成阶段。如果surrogateoptplot绘制函数运行时,就标志着这个开关和一个蓝色的垂直线。

  • BatchUpdateInterval——此选项控制算法的三个方面:

    • 数量的函数评估代理之前更新。

    • 点数传入一个矢量化评估。当UseVectorized真正的,surrogateopt通过矩阵的大小BatchUpdateInterval——- - - - - -据nvar,在那里据nvar是变量的数量问题。矩阵的每一行代表一个评估点。为最后的迭代(原因MaxFunctionEvaluations函数评估),如果MaxFunctionEvaluations不是一个整数倍数的BatchUpdateInterval,surrogateopt通过用更少的比一个矩阵BatchUpdateInterval行。

    • BatchUpdateInterval> 1,最低数量的随机样本点用于创建一个代理是较大的MinSurrogatePointsBatchUpdateInterval

    输出函数和情节函数更新后每一批完全评估。

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

停止条件

一般来说,算法停止只有当它达到一个极限,你在解算器中设置选项。此外,一块功能或输出功能可以阻止解算器。

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

解算器停止后完成MaxFunctionEvaluations功能评估。当并行计算,解算器停止所有工人工人返回最后的函数评估后,留下一些计算不完整的和未使用的。

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是一个函数的语法描述在接下来的段落。这个语法是一样的优化工具箱™输出功能,但不同的含义的xoptimValues参数。这些输出函数的信息,请参阅输出函数和情节函数的语法。输出函数的一个例子,请参阅整数规划与自定义输出函数

一个输出函数的语法是:

停止= outfun (x, optimValues状态)

surrogateopt传递的值x,optimValues,状态输出函数(outfun在每一次迭代时,在这种情况下)。输出函数返回停止一个布尔值(真正的)指示是否停止surrogateopt

  • x——输入参数x发现到目前为止是最好的点,这意味着最低的点目标函数值。

  • optimValues这个输入参数是一个结构包含以下字段。关于这些字段的更多信息,请参阅代理优化算法

optimValues结构

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

当前点是如何创建的。

  • “初始”——初始点options.InitialPoints

  • “随机”——随机样本范围内

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

currentFval

在当前的点目标函数值

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

当前点

elapsedtime

解算器开始以来的时间间隔,以秒为单位

国旗

最好的一点是怎么形成的

  • “初始”——初始点options.InitialPoints

  • “随机”——随机样本范围内

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

funccount

总目标函数的评价

fval

最低目标函数值

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

现任的观点是如何形成的呢

  • “初始”——初始点options.InitialPoints

  • “随机”——随机样本范围内

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

incumbentFval

在现任点目标函数值

incumbentX

现任点,意思是最好的点发现随机抽样自上次相移

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

迭代次数完成。等于funccount期间,除了“通路”状态,当迭代等于funccount- 1。这个字段允许surrogateopt使用相同的情节作为解决一些其他功能

surrogateReset

布尔值,指示当前迭代重置开关模型和随机抽样

surrogateResetCount

总次数surrogateReset真正的

  • 状态——这个输入参数算法的状态,指定为其中一个值。

    • “init”——算法在第一次迭代前的初始状态。算法是在这种状态下,你可以设置情节轴或其他数据结构或打开的文件。

      请注意

      状态“init”,输入参数xoptimValues.fval是空的([]),因为surrogateopt是专为耗时的目标函数,所以不评价目标函数在调用初始化之前的步骤。

    • “通路”——算法只是评估目标函数。你最执行大部分的计算和视图显示算法就处于这种状态。

    • “完成”——执行的算法其最终目标函数评价。当算法是在这种状态下,你可以关闭文件,完成情节,或在其他方面准备surrogateopt停止。

绘制函数

在每个迭代中一块函数显示信息。你可以暂停或停止点击按钮情节解算器。包括一块功能,设置PlotFcn选择一个函数名或函数句柄或单元阵列函数名或处理绘制功能。四个内置的情节函数是:

  • “optimplotfvalconstr”(默认)——情节最好的可行的目标函数值发现作为一个阴谋。如果没有目标函数、情节的最大非线性约束违反的阴谋。

    • 情节不可行点红色和可行点显示为蓝色。

    • 如果没有目标函数,情节标题显示了许多可行的解决方案。金宝搏官方网站

  • “optimplotfval”——显示最好的函数值。如果你不选择一个情节功能,surrogateopt使用@optimplotfval

  • “optimplotx”——显示最好的发现为条形图。

  • “surrogateoptplot”显示当前的目标函数值,最好的函数值,相位信息的算法。看到解释surrogateoptplot

您可以编写一个定制的情节功能使用的语法输出函数。例如,检查代码surrogateoptplot通过输入类型surrogateoptplot在MATLAB®命令行。

并行计算

当你设置UseParallel选项真正的,surrogateopt并行计算。并行计算需要并行计算工具箱™许可证。有关详细信息,请参见代理优化算法

你不能指定UseParallel = trueUseVectorized = true。如果您设置真正的解决,忽略了UseVectorized并尝试使用并行池并行计算,如果可能的话。

矢量化计算

当你设置UseVectorized选项真正的,surrogateopt通过目标函数的矩阵。矩阵的每一行代表一个点来评估。的矩阵options.BatchUpdateInterval行;然而,在最后的迭代矩阵可以有更少的行。使用这个选项对于自定义并行计算,如图所示矢量化代理定制并行仿真的优化

你不能指定UseParallel = trueUseVectorized = 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,输出]= surrogateopt (“check1.mat”)

继续优化使用新的选项,包括新期权作为第二个参数。

选择= optimoptions(选项,“MaxFunctionEvaluations”,500);[x, fval exitflag,输出]= surrogateopt (“check1.mat”选择)

在重新启动,surrogateopt运行任何输出函数和情节函数,基于最初的功能评估。所以,例如,您可以创建一个不同的情节基于优化,已经跑了。看到使用检查点文件

请注意

surrogateopt不保存所有国家在检查点文件的细节。因此,随后的迭代可以不同的迭代解算器需要不停地在检查点状态。

请注意

检查点是需要时间的。这个函数的开销尤其明显,否则采取一些时间来评估。

警告

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

另请参阅

相关的话题