在 optimoptions 和 optimset 之间进行选择
以前,设置优化选项的推荐方法是使用 optimset。现在,一般建议是使用 optimoptions,下面列出一些注意事项。
optimset 仍然有效,它是为没有 Optimization Toolbox™ 许可证的求解器设置选项的唯一方法:fminbnd、fminsearch、fzero 和 lsqnonneg。
注意:一些其他工具箱使用优化选项,并要求您传入使用 optimset 而不是 optimoptions 创建的选项。请查阅工具箱的文档。
optimoptions 按求解器组织选项,其显示比 optimset 更集中、更全面:
仅创建和修改适用于求解器的选项
显示特定求解器/算法的选项和默认值
显示有关求解器选项和其他可用求解器算法的详细信息的链接
intlinprog 和 coneprog 仅使用 optimoptions 选项。通常,Global Optimization Toolbox 求解器不使用 optimset 选项。
创建选项的主要区别是:
对于
optimoptions,将求解器名称作为第一个参量。
options = optimoptions(SolverName,Name,Value,...) or options = optimoptions(SolverName,Name=Value,...)
对于
optimset,语法不包括求解器名称。
options = optimset(Name,Value,..) or options = optimset(Name=Value,..)
在这两种情况下,您都可以使用圆点表示法来查询或更改选项。请参阅设置和更改优化选项和查看优化选项。
例如,将 optimoptions 的显示与 optimset 的显示进行比较。
options = optimoptions(@fminunc,SpecifyObjectiveGradient=true)
options =
fminunc options:
Options used by current Algorithm ('quasi-newton'):
(Other available algorithms: 'trust-region')
Set properties:
SpecifyObjectiveGradient: 1
Default properties:
Algorithm: 'quasi-newton'
Display: 'final'
FiniteDifferenceStepSize: 'sqrt(eps)'
FiniteDifferenceType: 'forward'
HessianApproximation: 'bfgs'
MaxFunctionEvaluations: '100*numberOfVariables'
MaxIterations: 400
ObjectiveLimit: -1.0000e+20
OptimalityTolerance: 1.0000e-06
OutputFcn: []
PlotFcn: []
StepTolerance: 1.0000e-06
TypicalX: 'ones(numberOfVariables,1)'
UseParallel: 0
Show options not used by current Algorithm ('quasi-newton')
options = optimset('GradObj','on')
options = struct with fields:
Display: []
MaxFunEvals: []
MaxIter: []
TolFun: []
TolX: []
FunValCheck: []
OutputFcn: []
PlotFcns: []
ActiveConstrTol: []
Algorithm: []
AlwaysHonorConstraints: []
DerivativeCheck: []
Diagnostics: []
DiffMaxChange: []
DiffMinChange: []
FinDiffRelStep: []
FinDiffType: []
GoalsExactAchieve: []
GradConstr: []
GradObj: 'on'
HessFcn: []
Hessian: []
HessMult: []
HessPattern: []
HessUpdate: []
InitBarrierParam: []
InitTrustRegionRadius: []
Jacobian: []
JacobMult: []
JacobPattern: []
LargeScale: []
MaxNodes: []
MaxPCGIter: []
MaxProjCGIter: []
MaxSQPIter: []
MaxTime: []
MeritFunction: []
MinAbsMax: []
NoStopIfFlatInfeas: []
ObjectiveLimit: []
PhaseOneTotalScaling: []
Preconditioner: []
PrecondBandWidth: []
RelLineSrchBnd: []
RelLineSrchBndDuration: []
ScaleProblem: []
SubproblemAlgorithm: []
TolCon: []
TolConSQP: []
TolGradCon: []
TolPCG: []
TolProjCG: []
TolProjCGAbs: []
TypicalX: []
UseParallel: []