代理优化选项
算法控制
控制代理优化算法,使用以下选项。
ConstraintTolerance
——约束宽容不是作为停止准则。它是用来确定可行性对非线性约束。当公差是满意马克斯(有趣的(x) .Ineq) < = ConstraintTolerance
,否则就是违反了。默认值是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
参数。这些输出函数的信息,请参阅输出函数和情节函数的语法。输出函数的一个例子,请参阅整数规划与自定义输出函数。
一个输出函数的语法是:
停止= outfun (x, optimValues状态)
surrogateopt
传递的值x
,optimValues
,状态
输出函数(outfun
在每一次迭代时,在这种情况下)。输出函数返回停止
一个布尔值(真正的
或假
)指示是否停止surrogateopt
。
x
——输入参数x
发现到目前为止是最好的点,这意味着最低的点目标函数值。optimValues
这个输入参数是一个结构包含以下字段。关于这些字段的更多信息,请参阅代理优化算法。
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
通过目标函数的矩阵。矩阵的每一行代表一个点来评估。的矩阵options.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,输出]= surrogateopt (“check1.mat”)
继续优化使用新的选项,包括新期权作为第二个参数。
选择= optimoptions(选项,“MaxFunctionEvaluations”,500);[x, fval exitflag,输出]= surrogateopt (“check1.mat”选择)
在重新启动,surrogateopt
运行任何输出函数和情节函数,基于最初的功能评估。所以,例如,您可以创建一个不同的情节基于优化,已经跑了。看到使用检查点文件。
请注意
surrogateopt
不保存所有国家在检查点文件的细节。因此,随后的迭代可以不同的迭代解算器需要不停地在检查点状态。
请注意
检查点是需要时间的。这个函数的开销尤其明显,否则采取一些时间来评估。
警告
不恢复surrogateopt
从一个检查点文件创建一个不同的MATLAB版本。surrogateopt
可以抛出一个错误或不一致的结果。