sdpsettings.m

来自「国外专家做的求解LMI鲁棒控制的工具箱,可以相对高效的解决LMI问题」· M 代码 · 共 1,007 行 · 第 1/2 页

M
1,007
字号
function options = sdpsettings(varargin)
%SDPSETTINGS Create/alter solver options structure.
%
%   OPTIONS = SDPSETTINGS with no input arguments returns
%   setting structure with default values
%
%   OPTIONS = SDPSETTINGS('NAME1',VALUE1,'NAME2',VALUE2,...) creates a
%   solution options structure OPTIONS in which the named properties have
%   the specified values.  Any unspecified properties have default values.
%   It is sufficient to type only the leading characters that uniquely
%   identify the property.  Case is ignored for property names.
%
%   OPTIONS = SDPSETTINGS(OLDOPTS,'NAME1',VALUE1,...) alters an existing options
%   structure OLDOPTS.
%
%
%   SDPSETTINGS PROPERTIES
%
%   GENERAL
%
%    solver             - Specify solver [''|sdpt3|sedumi|sdpa|pensdp|penbmi|csdp|dsdp|maxdet|lmilab|cdd|cplex|xpress|mosek|nag|quadprog|linprog|bnb|bmibnb|kypd|mpt|none ('')]
%    verbose            - Display-level [0|1|2|...(0)] (0-silent, 1-normal, >1-loud)
%    usex0              - Use the current values obtained from double as initial iterate [0|1 (0)]
%    dimacs             - Compute DIMACS error measures [0|1(1)]
%
%    showprogress       - Show progress of YALMIP (suitable for large problems) [0|1 (0)]
%    cachesolvers       - Check for available solvers only first time solvesdp is called [0|1 (0)]
%    warning            - Shows a warning if a problems occurs when solving a problem (infeasibility, numerical problem etc.) [0|1 (1)]
%    beeponproblem      - Beeps when certain warning/error occurs [ integers -2|-1|1|2|3|4|5|6|7|8|9|10|11]
%    saveduals          - Dual variables are saved in YALMIP [0|1 (1)]
%    savesolverinput    - Keep all data sent to solver [0|1 (0)]
%    savesolveroutput   - Keep all data returned from solver [0|1 (0)]
%    removeequalities   - Let YALMIP remove equality constraints [-1|0|1 (0)] (-1:with double inequalities, 0:don't, 1:by QR decomposition, 2:basis from constraints)
%    convertconvexquad  - Convert convex quadratic constraints to second order cones [0|1 (1)]
%    radius             - Add radius constraint on all pimal variables ||x||<radius [double >=0 (inf)]
%    shift              - Add small perturbation to (try to) enforce strict feasibility [double >=0 (0)]
%    relax              - Disregard integrality constraint and/or relax nonlinear terms  [0 | 1 (both) 2 (relax integrality) 3 (relax nonlinear terms) (0)]
%
%   SUM-OF-SQUARES
%
%    options.sos, see help solvesos
%
%   BRANCH AND BOUND for mixed integer programs
%
%    options.bnb, see help bnb
%
%   BRANCH AND BOUND for polynomial programs
%
%    options.bmibnb, see help bmibnb
%
%   EXTERNAL SOLVERS
%
%    See solver manuals.
%
%   See also SOLVESDP, SET, SDPVARsca

% Author Johan L鰂berg (ripped from odeset)
% $Id: sdpsettings.m,v 1.19 2005/07/12 07:00:45 joloef Exp $

% Print out possible values of properties.
if (nargin == 0) & (nargout == 0)
    help sdpsettings
    return;
end

Names = {'solver'
    'verbose'
    'showprogress'
    'cachesolvers'
    'savesolveroutput'
    'savesolverinput'
    'saveduals'
    'removeequalities'
    'convertconvexquad'
    'beeponproblem'
    'warning'
    'dimacs'
    'radius'
    'shift'
    'reduce'
    'relax'
    'usex0'
    'savedebug'
    'bnb.branchrule'
    'bnb.method'
    'bnb.verbose'
    'bnb.solver'
    'bnb.uppersolver'
    'bnb.presolve'
    'bnb.inttol'
    'bnb.feastol'
    'bnb.gaptol'
    'bnb.maxiter'
    'bnb.round'
    'bmilin.trust'
    'bmilin.alpha'
    'bmilin.beta'
    'bmilin.solver'
    'bmilin.maxiterls'
    'bmilin.maxiter'
    'bmibnb.branchmethod'
    'bmibnb.branchrule'
    'bmibnb.lpreduce'
    'bmibnb.lowrank'
    'bmibnb.lowersolver'
    'bmibnb.uppersolver'
    'bmibnb.lpsolver'
    'bmibnb.target'
    'bmibnb.vartol'
    'bmibnb.relgaptol'
    'bmibnb.absgaptol'
    'bmibnb.pdtol'
    'bmibnb.eqtol'
    'bmibnb.maxiter'
    'bmibnb.maxtime'
    'bmibnb.roottight'
    'bmibnb.numglobal'
    'cutsdp.solver'
    'cutsdp.maxiter'
    'cutsdp.cutlimit'
    'cutsdp.feastol'
    'cutsdp.variablebound'
    'cutsdp.recoverdual'
    'global.branchmethod'
    'global.branchrule'
    'global.lpreduce'
    'global.roottight'
    'global.lowrank'
    'global.lowersolver'
    'global.uppersolver'
    'global.lpsolver'
    'global.target'
    'global.vartol'
    'global.relgaptol'
    'global.absgaptol'
    'global.pdtol'
    'global.eqtol'
    'gloal.inttol'
    'global.maxiter'
    'global.maxtime'
    'mpcvx.solver'
    'mpcvx.eps'
    'bpmpd.opts'
    'sp.AbsTol'
    'sp.RelTol'
    'sp.nu'
    'sp.tv'
    'sp.Mfactor'
    'sp.NTiters'
    'maxdet.AbsTol'
    'maxdet.RelTol'
    'maxdet.gam'
    'socp.AbsTol'
    'socp.RelTol'
    'socp.target'
    'socp.max_iter'
    'socp.nu'
    'socp.outmode'
    'sdpt3.vers'
    'sdpt3.gam'
    'sdpt3.predcorr'
    'sdpt3.expon'
    'sdpt3.gaptol'
    'sdpt3.inftol'
    'sdpt3.steptol'
    'sdpt3.maxit'
    'sdpt3.sw2PC_tol'
    'sdpt3.use_corrprim'
    'sdpt3.printyes'
    'sdpt3.scale_data'
    'sdpt3.schurfun'
    'sdpt3.schurfun_parms'
    'sdpt3.randnstate'
    'sdpt3.spdensity'
    'sdpt3.rmdepconstr'
    'sdpt3.CACHE_SIZE'
    'sdpt3.LOOP_LEVEL'
    'sdpt3.cachesize'
    'sdpt3.linsys_options'
    'sdpt3.smallblkdim'
    'sedumi.removeequalities'
    'sedumi.alg'
    'sedumi.beta'
    'sedumi.theta'
    'sedumi.free'
    'sedumi.sdp'
    'sedumi.stepdif'
    'sedumi.w'
    'sedumi.mu'
    'sedumi.eps'
    'sedumi.bigeps'
    'sedumi.maxiter'
    'sedumi.vplot'
    'sedumi.stopat'
    'sedumi.denq'
    'sedumi.denf'
    'sedumi.numtol'
    'sedumi.bignumtol'
    'sedumi.numlvl'
    'sedumi.chol.skip'
    'sedumi.chol.abstol'
    'sedumi.chol.canceltol'
    'sedumi.chol.maxu'
    'sedumi.chol.maxuden'
    'sedumi.chol.numlvl'
    'sedumi.chol.deptol'
    'sedumi.chol.ph1tol'
    'sedumi.cg.qprec'
    'sedumi.cg.restol'
    'sedumi.cg.stagtol'
    'sedumi.cg.maxiter'
    'sedumi.cg.refine'      
    'dsdp.r0'  
    'dsdp.zbar'
    'dsdp.penalty' 
    'dsdp.boundy' 
    'dsdp.gaptol'
    'dsdp.maxit'
    'dsdp.steptol'
    'dsdp.inftol'
    'dsdp.dual_bound'
    'dsdp.dobjmin'
    'dsdp.rho'
    'dsdp.dynamicrho'
    'dsdp.cc'    
    'dsdp.bigM'    
    'dsdp.mu0'
    'dsdp.reuse'
    'dsdp.lp_barrier'      
    'dsdp.objectiveconstant'    
    'dsdp.matrixfreesize'
    'dsdp.scale_data'    
    'dsdp.maxlanczos'
    'dsdp.max_trust_radius'
    'dsdp.maxtrustradius'
    'dsdp.max_mu_reduction'
    'dsdp.max_infeasible_trust_radius'
    'dsdp.max_infeasible_mu_reduction'   
    'sdplr.feastol'
    'sdplr.centol'
    'sdplr.dir'
    'sdplr.penfac'
    'sdplr.reduce'
    'sdplr.limit'
    'sdplr.maxrank'
    'sdplr.soln_factored'
    'sdpa.maxIteration'
    'sdpa.epsilonStar'
    'sdpa.lambdaStar'
    'sdpa.omegaStar'
    'sdpa.lowerBound'
    'sdpa.upperBound'
    'sdpa.betaStar'
    'sdpa.betaBar'
    'sdpa.gammaStar'
    'sdpa.epsilonDash'
    'sdpa.searchDir'
    'sdpa.isSymmetric'
    'glpk.lpsolver'
    'glpk.scale'
    'glpk.dual'
    'glpk.price'
    'glpk.relax'
    'glpk.tolbnd'
    'glpk.toldj'
    'glpk.tolpiv'
    'glpk.round'
    'glpk.objll'
    'glpk.objul'
    'glpk.itlim'
    'glpk.tmlim'
    'glpk.branch'
    'glpk.btrack'
    'glpk.tolint'
    'glpk.tolobj'
    'glpk.presol'
    'glpk.save'
    'cplex.presol'
    'cplex.niter'
    'cplex.epgap'
    'cplex.epagap'
    'cplex.relobjdif'
    'cplex.objdif'
    'cplex.tilim'
    'qsopt.dual'
    'qsopt.primalprice'
    'qsopt.dualprice'
    'qsopt.scale'
    'qsopt.maxiter'
    'qsopt.maxtime'
    'xpress.presol'
    'xpress.niter'
    'lpsolve.scalemode'
    'cdd.method'
    'clp.solver'
    'clp.maxnumiterations'
    'clp.maxnumseconds'
    'clp.primaltolerance'
    'clp.dualtolerance'
    'clp.primalpivot'
    'clp.dualpivot'
    'pensdp.DEF'
    'pensdp.PBM_MAX_ITER'
    'pensdp.UM_MAX_ITER'
    'pensdp.OUTPUT'
    'pensdp.DENSE'
    'pensdp.LS'
    'pensdp.XOUT'
    'pensdp.UOUT'    
    'pensdp.U0'
    'pensdp.MU'
    'pensdp.MU2'
    'pensdp.PBM_EPS'
    'pensdp.P_EPS'
    'pensdp.UMIN'
    'pensdp.ALPHA'
    'pensdp.P0'
    'penbmi.DEF'
    'penbmi.PBM_MAX_ITER'
    'penbmi.UM_MAX_ITER'
    'penbmi.OUTPUT'
    'penbmi.DENSE'
    'penbmi.LS'
    'penbmi.XOUT'
    'penbmi.UOUT'
    'penbmi.NWT_SYS_MODE'
    'penbmi.PREC_TYPE'
    'penbmi.DIMACS'
    'penbmi.TR_MODE'
    'penbmi.U0'
    'penbmi.MU'
    'penbmi.MU2'
    'penbmi.PBM_EPS'
    'penbmi.P_EPS'
    'penbmi.UMIN'
    'penbmi.ALPHA'
    'penbmi.P0'   
    'penbmi.PEN_UP'
    'penbmi.ALPHA_UP'  
    'penbmi.PRECISION_2'  
    'penbmi.CG_TOL_DIR'  
    
    'pennlp.maxit'
    'pennlp.nwtiters'
    'pennlp.hessianmode'
    'pennlp.autoscale'
    'pennlp.convex'
    'pennlp.eqltymode'
    'pennlp.ignoreinit'
    'pennlp.ncmode'
    'pennlp.nwtstopcrit'
    'pennlp.penalty'
    'pennlp.nwtmode'
    'pennlp.prec'
    'pennlp.cmaxnzs'
    'pennlp.autoini'
    'pennlp.ipenup'    
    'pennlp.precision'
    'pennlp.uinit'
    'pennlp.pinit'
    'pennlp.alpha'
    'pennlp.mu'
    'pennlp.dpenup'
    'pennlp.peps'
    'pennlp.umin'
    'pennlp.preckkt'
    'pennlp.cgtolmin'
    'pennlp.cgtolup'
    'pennlp.uinitbox'
    'pennlp.uinitnc'

    'lmirank.solver'
    'lmirank.maxiter'    
    'lmirank.eps'
    'lmirank.itermod'
    'lmilab.reltol'
    'lmilab.maxiter'
    'lmilab.feasradius'
    'lmilab.L'
    'miqp.solver'
    'miqp.method'
    'miqp.branchrule'
    'miqp.order'
    'miqp.verbose'
    'miqp.maxqp'
    'miqp.inftol'
    'miqp.matrixtol'
    'miqp.postol'
    'miqp.integtol'
    'miqp.maxQPiter'
    'sos.model'
    'sos.newton'
    'sos.congruence'
    'sos.scale'
    'sos.postprocess'
    'sos.sparsetol'
    'sos.impsparse'
    'sos.extlp'
    'sos.csp'
    'sos.savedecomposition'
    'sos.clean'
    'sos.traceobj'
    'sos.reuse'
    'sos.inconsistent'
    'sos.separable'
    'csdp.axtol'
    'csdp.atytol'
    'csdp.objtol'
    'csdp.pinftol'
    'csdp.dinftol'
    'csdp.maxiter'
    'csdp.minstepfrac'
    'csdp.maxstepfrac'
    'csdp.minstepp'
    'csdp.minstepd'
    'csdp.usexzgap'
    'csdp.tweakgap'
    'specsdp.gatol1'
    'specsdp.gatol2'
    'specsdp.niter=20'
    'specsdp.faiseps'
    'specsdp.compleps'
    'specsdp.stateps'
    'specsdp.penfact'
    'specsdp.penmin'
    'specsdp.pendiv'
    'specsdp.peneps'
    'specsdp.Vinit'
    'specsdp.radius'
    'nag.featol'
    'nag.itmax'
    'nag.bigbnd'
    'nag.orthog'
    'kypd.solver'
    'kypd.lyapunovsolver'
    'kypd.reduce'
    'kypd.transform'
    'kypd.rho'
    'kypd.tol'
    'moment.order'
    'moment.solver'
    'moment.refine'
    'moment.extractrank'
    'moment.rceftol'
};

% Try to run optimset
[Names,quadprognames,quadprogops]     = trytoset('quadprog',Names);
[Names,linprognames,linprogops]       = trytoset('linprog',Names);
[Names,bintprognames,bintprogops]     = trytoset('bintprog',Names);
[Names,fminconnames,fminconops]       = trytoset('fmincon',Names);
[Names,fminsearchnames,fminsearchops] = trytoset('fminsearch',Names);

obsoletenames ={
    'abstol'
    'reltol'
    'accelerator'
    'maxiters'
    'abstol_init'
    'reltol_init'
    'accelerator_init'
    'maxiters_init'
    'tv'
    'mfactor'
    'sedumi.maxradius'
    'sedumi.uselpsolver'
    'sedumi.removeequalities'
    'silent'
    'sos.solvedual'
    'reduce'};

[m,n] = size(Names);
names = lower(Names);

if (nargin>0) & isstruct(varargin{1})
    options = varargin{1};
    paramstart = 2;
else
    paramstart = 1;
    % YALMIP options
    options.solver = '';
    options.verbose = 1;
    options.dimacs = 1;
    options.warning = 1;
    options.cachesolvers = 0;
    options.beeponproblem = [-5 -4 -3 -2 -1];
    options.showprogress = 0;
    options.saveduals = 1;
    options.removeequalities = 0;
    options.savesolveroutput = 0;
    options.savesolverinput  = 0;
    options.convertconvexquad = 1;
    options.radius = inf;
    options.relax = 0;
    options.usex0 = 0;
    options.shift = 0; 
    options.savedebug = 0;    
    
    options.sos.model = 0;
    options.sos.newton = 1;    
    options.sos.congruence = 2;
    options.sos.scale = 1;
    options.sos.postprocess = 0;
    options.sos.csp = 0;    

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?