# optimoptions
创建优化选项
函数库: TyOptimization
# 语法
options = optimoptions(SolverName)
options = optimoptions(SolverName;Key=Value)
options = optimoptions(oldoptions;Key=Value)
options = optimoptions(SolverName,oldoptions)
# 说明
options = optimoptions(SolverName) 返回 SolverName 求解器的一组默认选项。示例
options = optimoptions(SolverName;Key=Value) 返回 options,其中包含使用一个或多个键-值对组参数设置的指定参数。示例
options = optimoptions(oldoptions;Key=Value) 返回 oldoptions 的副本,并使用指定值更改了指定参数。示例
options = optimoptions(SolverName,oldoptions) 返回 SolverName 求解器的默认选项,并将 oldoptions 中的适用选项复制到 options 中。示例
# 示例
创建默认选项
为 fmincon 求解器创建默认选项。
using TyOptimization
options = optimoptions(:fmincon)
options =
fmincon options:
Options used by current Algorithm ("active-set"):
(Other available algorithms: "interior-point","trust-region-reflective","sqp","sqp-legacy")
Algorithm | active-set
CheckGradients | false
ConstraintTolerance | 1.0e-6
Display | final
FiniteDifferenceStepSize | Float64[]
FiniteDifferenceType | forward
MaxFunctionEvaluations | -1
MaxIterations | -1
OptimalityTolerance | 1.0e-6
OutputFcn | nothing
PlotFcn | nothing
SpecifyConstraintGradient | false
SpecifyObjectiveGradient | false
StepTolerance | NaN
TypicalX | Float64[]
UseParallel | false
FunctionTolerance | 1.0e-6
Show options not used by current Algorithm ("active-set")
创建非默认选项
为 fmincon 设置选项,以使用 sqp 算法和最多 1500 次迭代。
using TyOptimization
options = optimoptions(:fmincon,Algorithm="sqp",MaxIterations=1500)
options =
fmincon options:
Options used by current Algorithm ("sqp"):
(Other available algorithms: "interior-point","trust-region-reflective","sqp-legacy","active-set")
Algorithm | sqp
CheckGradients | false
ConstraintTolerance | 1.0e-6
Display | final
FiniteDifferenceStepSize | Float64[]
FiniteDifferenceType | forward
MaxFunctionEvaluations | -1
MaxIterations | 1500
OptimalityTolerance | 1.0e-6
OutputFcn | nothing
PlotFcn | nothing
SpecifyConstraintGradient | false
SpecifyObjectiveGradient | false
StepTolerance | NaN
TypicalX | Float64[]
UseParallel | false
ObjectiveLimit | -1.0e20
ScaleProblem | false
Show options not used by current Algorithm ("sqp")
更新选项
用新值更新现有选项。
为 lsqnonlin 求解器设置选项,以使用 levenberg-marquardt 算法和最多 1500 个函数计算
using TyOptimization
oldoptions = optimoptions(:lsqnonlin,Algorithm="levenberg-marquardt",MaxFunctionEvaluations=1500)
lsqnonlin options:
Options used by current Algorithm ("levenberg-marquardt"):
(Other available algorithms: "trust-region-reflective","active-set")
Algorithm | levenberg-marquardt
CheckGradients | false
Display | final
FiniteDifferenceStepSize | Float64[]
FiniteDifferenceType | forward
FunctionTolerance | 1.0e-6
MaxFunctionEvaluations | 1500
MaxIterations | -1
OptimalityTolerance | 1.0e-6
OutputFcn | nothing
PlotFcn | nothing
SpecifyObjectiveGradient | false
StepTolerance | NaN
TypicalX | Float64[]
UseParallel | false
Show options not used by current Algorithm ("levenberg-marquardt")
将 MaxFunctionEvaluations 增加到 2000。
options = optimoptions(oldoptions,MaxFunctionEvaluations=2000)
options =
lsqnonlin options:
Options used by current Algorithm ("levenberg-marquardt"):
(Other available algorithms: "trust-region-reflective","active-set")
Algorithm | levenberg-marquardt
CheckGradients | false
Display | final
FiniteDifferenceStepSize | Float64[]
FiniteDifferenceType | forward
FunctionTolerance | 1.0e-6
MaxFunctionEvaluations | 2000
MaxIterations | -1
OptimalityTolerance | 1.0e-6
OutputFcn | nothing
PlotFcn | nothing
SpecifyObjectiveGradient | false
StepTolerance | NaN
TypicalX | Float64[]
UseParallel | false
Show options not used by current Algorithm ("levenberg-marquardt")
使用圆点表示法更新选项
使用圆点表示法用新值更新现有选项。
为 lsqnonlin 求解器设置选项,以使用 levenberg-marquardt 算法和最多 1500 个函数计算
using TyOptimization
options = optimoptions(:lsqnonlin,Algorithm="levenberg-marquardt",MaxFunctionEvaluations=1500)
options =
lsqnonlin options:
Options used by current Algorithm ("levenberg-marquardt"):
(Other available algorithms: "trust-region-reflective","active-set")
Algorithm | levenberg-marquardt
CheckGradients | false
Display | final
FiniteDifferenceStepSize | Float64[]
FiniteDifferenceType | forward
FunctionTolerance | 1.0e-6
MaxFunctionEvaluations | 1500
MaxIterations | -1
OptimalityTolerance | 1.0e-6
OutputFcn | nothing
PlotFcn | nothing
SpecifyObjectiveGradient | false
StepTolerance | NaN
TypicalX | Float64[]
UseParallel | false
Show options not used by current Algorithm ("levenberg-marquardt")
使用圆点表示法将 MaxFunctionEvaluations 增加到 2000。
options.MaxFunctionEvaluations = 2000
options =
lsqnonlin options:
Options used by current Algorithm ("levenberg-marquardt"):
(Other available algorithms: "trust-region-reflective","active-set")
Algorithm | levenberg-marquardt
CheckGradients | false
Display | final
FiniteDifferenceStepSize | Float64[]
FiniteDifferenceType | forward
FunctionTolerance | 1.0e-6
MaxFunctionEvaluations | 2000
MaxIterations | -1
OptimalityTolerance | 1.0e-6
OutputFcn | nothing
PlotFcn | nothing
SpecifyObjectiveGradient | false
StepTolerance | NaN
TypicalX | Float64[]
UseParallel | false
Show options not used by current Algorithm ("levenberg-marquardt")
将选项复制到另一个求解器
将 fmincon 求解器的非默认选项转移到 fminunc 求解器的选项。
为 fmincon 设置选项,以使用 sqp 算法和最多 1500 次迭代。
using TyOptimization
oldoptions = optimoptions(:fmincon,Algorithm="sqp",MaxIterations=1500)
oldoptions =
fmincon options:
Options used by current Algorithm ("sqp"):
(Other available algorithms: "interior-point","trust-region-reflective","sqp-legacy","active-set")
Algorithm | sqp
CheckGradients | false
ConstraintTolerance | 1.0e-6
Display | final
FiniteDifferenceStepSize | Float64[]
FiniteDifferenceType | forward
MaxFunctionEvaluations | -1
MaxIterations | 1500
OptimalityTolerance | 1.0e-6
OutputFcn | nothing
PlotFcn | nothing
SpecifyConstraintGradient | false
SpecifyObjectiveGradient | false
StepTolerance | NaN
TypicalX | Float64[]
UseParallel | false
ObjectiveLimit | -1.0e20
ScaleProblem | false
Show options not used by current Algorithm ("sqp")
将适用选项迁移到 fminunc 求解器。
options = optimoptions(:fminunc,oldoptions)
options =
fminunc options:
Options used by current Algorithm ("quasi-newton"):
(Other available algorithms: "trust-region")
Algorithm | quasi-newton
DerivativeCheck | false
Display | final
FiniteDifferenceStepSize | Float64[]
FiniteDifferenceType | forward
MaxFunctionEvaluations | -1
MaxIterations | 1500
OptimalityTolerance | 1.0e-6
OutputFcn | nothing
PlotFcn | nothing
SpecifyObjectiveGradient | false
StepTolerance | 1.0e-6
TypicalX | Float64[]
HessianApproximation | bfgs
ObjectiveLimit | -1.0e20
UseParallel | false
Show options not used by current Algorithm ("quasi-newton")
算法选项不会传输到 fminunc,因为 "sqp" 不是 fminunc 的有效算法选项。
# 输入参数
SolverName — 求解器名称函数符号 | 字符串
求解器名称,指定为函数符号或字符串。
示例: :fmincon
示例: "fmincon"
oldoptions — 用 optimoptions 创建的选项选项对象
使用 optimoptions 函数创建的选项,指定为选项对象。
示例: oldoptions = optimoptions(:fminunc)
# 键-值参数
将可选的参数对组指定为 Name1=Key1,...,NameN=KeyN,其中 Key 是参数名称,Value 是对应的值。键-值参数必须出现在其他参数之后,但参数对组的顺序无关紧要。
示例: optimoptions(:fmincon,Display="iter",FunctionTolerance=1e-10) 将 fmincon 选项设置为具有迭代输出且 FunctionTolerance 为 1e-10。
如需了解相关的名称-值对组参数,请参考您的求解器的选项表:
fmincon options
fminimax options
fminunc options
fseminf options
fsolve options
linprog options
lsqcurvefit options
lsqlin options
lsqnonlin options
quadprog options
# 输出参数
options — 优化选项选项对象
SolverName 求解器的优化选项,以选项对象形式返回。