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 ('trust-region'): (Other available algorithms: 'quasi-newton') Set properties: SpecifyObjectiveGradient: 1 Default properties: Algorithm: 'trust-region' CheckGradients: 0 Display: 'final' FiniteDifferenceStepSize: 'sqrt(eps)' FiniteDifferenceType: 'forward' FunctionTolerance: 1.0000e-06 HessianFcn: [] HessianMultiplyFcn: [] MaxFunctionEvaluations: '100*numberOfVariables' MaxIterations: 400 OptimalityTolerance: 1.0000e-06 OutputFcn: [] PlotFcn: [] StepTolerance: 1.0000e-06 SubproblemAlgorithm: 'cg' TypicalX: 'ones(numberOfVariables,1)' Show options not used by current Algorithm ('trust-region')
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: [] Simplex: [] SubproblemAlgorithm: [] TolCon: [] TolConSQP: [] TolGradCon: [] TolPCG: [] TolProjCG: [] TolProjCGAbs: [] TypicalX: [] UseParallel: []