Escoja entre optimoptions
y optimset
Anteriormente, la forma recomendada para configurar las opciones de optimización era utilizar optimset
. Ahora la recomendación general es utilizar optimoptions
, con algunas advertencias que se enumeran debajo.
optimset
sigue funcionando y es la única forma de establecer opciones para solvers que están disponibles sin una licencia de Optimization Toolbox™: fminbnd
, fminsearch
, fzero
y lsqnonneg
.
Nota: Algunas otras toolboxes utilizan opciones de optimización y necesitan que pase opciones creadas utilizando optimset
, no optimoptions
. Compruebe la documentación de sus toolboxes.
optimoptions
organiza las opciones por solver, con una visualización más centrada y completa que optimset
:
Crea y modifica únicamente las opciones que se aplican a un solver
Muestra las opciones que ha seleccionado y los valores predeterminados para un solver/algoritmo específico.
Muestra enlaces para obtener más información sobre opciones de solver y otros algoritmos de solver disponibles
intlinprog
utiliza únicamente opciones optimoptions
.
La principal diferencia a la hora de crear opciones es:
En el caso de
optimoptions
, se incluye el nombre de solver como primer argumento.
options = optimoptions(SolverName,Name,Value,...)
En el caso de
optimset
, la sintaxis no incluye el nombre de solver.
options = optimset(Name,Value,..)
En ambos casos, puede consultar o cambiar las opciones utilizando notación de puntos. Consulte Establecer y modificar opciones de optimización y Consultar las opciones de optimización.
Por ejemplo, compare la visualización de optimoptions
con la de 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 Options not used by current Algorithm ('quasi-newton') Default properties: FunctionTolerance: 1.0000e-06 HessianFcn: [] HessianMultiplyFcn: [] SubproblemAlgorithm: 'cg'
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: []