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: []