# 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 求解器的优化选项,以选项对象形式返回。

# 另请参阅

optimset | resetoptions | OptimizationProblem