1 | function options = sdpsettings(varargin) |
---|
2 | %SDPSETTINGS Create/alter solver options structure. |
---|
3 | % |
---|
4 | % OPTIONS = SDPSETTINGS with no input arguments returns |
---|
5 | % setting structure with default values |
---|
6 | %c |
---|
7 | % OPTIONS = SDPSETTINGS('NAME1',VALUE1,'NAME2',VALUE2,...) creates a |
---|
8 | % solution options structure OPTIONS in which the named properties have |
---|
9 | % the specified values. Any unspecified properties have default values. |
---|
10 | % It is sufficient to type only the leading characters that uniquely |
---|
11 | % identify the property. Case is ignored for property names. |
---|
12 | % |
---|
13 | % OPTIONS = SDPSETTINGS(OLDOPTS,'NAME1',VALUE1,...) alters an existing options |
---|
14 | % structure OLDOPTS. |
---|
15 | % |
---|
16 | % |
---|
17 | % SDPSETTINGS PROPERTIES |
---|
18 | % |
---|
19 | % GENERAL |
---|
20 | % |
---|
21 | % solver - Specify solver [''|sdpt3|sedumi|sdpa|pensdp|penbmi|csdp|dsdp|maxdet|lmilab|cdd|cplex|xpress|mosek|nag|quadprog|linprog|bnb|bmibnb|kypd|mpt|none ('')] |
---|
22 | % verbose - Display-level [0|1|2|...(0)] (0-silent, 1-normal, >1-loud) |
---|
23 | % usex0 - Use the current values obtained from double as initial iterate [0|1 (0)] |
---|
24 | % dimacs - Compute DIMACS error measures [0|1(1)] |
---|
25 | % |
---|
26 | % showprogress - Show progress of YALMIP (suitable for large problems) [0|1 (0)] |
---|
27 | % cachesolvers - Check for available solvers only first time solvesdp is called [0|1 (0)] |
---|
28 | % warning - Shows a warning if a problems occurs when solving a problem (infeasibility, numerical problem etc.) [0|1 (1)] |
---|
29 | % beeponproblem - Beeps when certain warning/error occurs [ integers -2|-1|1|2|3|4|5|6|7|8|9|10|11] |
---|
30 | % saveduals - Dual variables are saved in YALMIP [0|1 (1)] |
---|
31 | % savesolverinput - Keep all data sent to solver [0|1 (0)] |
---|
32 | % savesolveroutput - Keep all data returned from solver [0|1 (0)] |
---|
33 | % 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) |
---|
34 | % convertconvexquad - Convert convex quadratic constraints to second order cones [0|1 (1)] |
---|
35 | % radius - Add radius constraint on all pimal variables ||x||<radius [double >=0 (inf)] |
---|
36 | % shift - Add small perturbation to (try to) enforce strict feasibility [double >=0 (0)] |
---|
37 | % relax - Disregard integrality constraint and/or relax nonlinear terms [0 | 1 (both) 2 (relax integrality) 3 (relax nonlinear terms) (0)] |
---|
38 | % allowmilp - Allow introduction of binary variables to model nonlinear operators [0 | 1 (0)] |
---|
39 | % expand - Expand nonlinear operators [0|1 (1)]. Should always be true except in rare debugging cases. |
---|
40 | % |
---|
41 | % SUM-OF-SQUARES |
---|
42 | % |
---|
43 | % options.sos, see help solvesos |
---|
44 | % |
---|
45 | % BRANCH AND BOUND for mixed integer programs |
---|
46 | % |
---|
47 | % options.bnb, see help bnb |
---|
48 | % |
---|
49 | % BRANCH AND BOUND for polynomial programs |
---|
50 | % |
---|
51 | % options.bmibnb, see help bmibnb |
---|
52 | % |
---|
53 | % EXTERNAL SOLVERS |
---|
54 | % |
---|
55 | % See solver manuals. |
---|
56 | % |
---|
57 | % See also SOLVESDP, SET, SDPVAR |
---|
58 | |
---|
59 | % Author Johan Löfberg (ripped from odeset) |
---|
60 | % $Id: sdpsettings.m,v 1.46 2006/09/26 08:15:56 joloef Exp $ |
---|
61 | |
---|
62 | % Print out possible values of properties. |
---|
63 | if (nargin == 0) & (nargout == 0) |
---|
64 | help sdpsettings |
---|
65 | return; |
---|
66 | end |
---|
67 | |
---|
68 | Names = {'solver' |
---|
69 | 'verbose' |
---|
70 | 'showprogress' |
---|
71 | 'cachesolvers' |
---|
72 | 'savesolveroutput' |
---|
73 | 'savesolverinput' |
---|
74 | 'saveduals' |
---|
75 | 'removeequalities' |
---|
76 | 'convertconvexquad' |
---|
77 | 'beeponproblem' |
---|
78 | 'warning' |
---|
79 | 'dimacs' |
---|
80 | 'radius' |
---|
81 | 'shift' |
---|
82 | 'reduce' |
---|
83 | 'dualize' |
---|
84 | 'relax' |
---|
85 | 'usex0' |
---|
86 | 'expand' |
---|
87 | 'allowmilp' |
---|
88 | 'allownonconvex' |
---|
89 | 'savedebug' |
---|
90 | 'debug' |
---|
91 | 'bnb.branchrule' |
---|
92 | 'bnb.method' |
---|
93 | 'bnb.verbose' |
---|
94 | 'bnb.solver' |
---|
95 | 'bnb.uppersolver' |
---|
96 | 'bnb.presolve' |
---|
97 | 'bnb.inttol' |
---|
98 | 'bnb.feastol' |
---|
99 | 'bnb.gaptol' |
---|
100 | 'bnb.maxiter' |
---|
101 | 'bnb.round' |
---|
102 | 'bnb.weight' |
---|
103 | 'bnb.nodefix' |
---|
104 | 'bnb.nodetight' |
---|
105 | 'bnb.prunetol' |
---|
106 | 'bnb.multiple' |
---|
107 | 'bmilin.trust' |
---|
108 | 'bmilin.alpha' |
---|
109 | 'bmilin.beta' |
---|
110 | 'bmilin.solver' |
---|
111 | 'bmilin.maxiterls' |
---|
112 | 'bmilin.maxiter' |
---|
113 | 'bmibnb.branchmethod' |
---|
114 | 'bmibnb.branchrule' |
---|
115 | 'bmibnb.lpreduce' |
---|
116 | 'bmibnb.lowrank' |
---|
117 | 'bmibnb.lowersolver' |
---|
118 | 'bmibnb.uppersolver' |
---|
119 | 'bmibnb.lpsolver' |
---|
120 | 'bmibnb.target' |
---|
121 | 'bmibnb.vartol' |
---|
122 | 'bmibnb.relgaptol' |
---|
123 | 'bmibnb.absgaptol' |
---|
124 | 'bmibnb.pdtol' |
---|
125 | 'bmibnb.eqtol' |
---|
126 | 'bmibnb.maxiter' |
---|
127 | 'bmibnb.maxtime' |
---|
128 | 'bmibnb.roottight' |
---|
129 | 'bmibnb.numglobal' |
---|
130 | 'cutsdp.solver' |
---|
131 | 'cutsdp.maxiter' |
---|
132 | 'cutsdp.cutlimit' |
---|
133 | 'cutsdp.feastol' |
---|
134 | 'cutsdp.variablebound' |
---|
135 | 'cutsdp.recoverdual' |
---|
136 | 'cutsdp.nodefix' |
---|
137 | 'cutsdp.nodetight' |
---|
138 | 'mp.algorithm' |
---|
139 | 'mp.unbounded' |
---|
140 | 'mp.simplify' |
---|
141 | 'mp.presolve' |
---|
142 | 'global.branchmethod' |
---|
143 | 'global.branchrule' |
---|
144 | 'global.lpreduce' |
---|
145 | 'global.roottight' |
---|
146 | 'global.lowrank' |
---|
147 | 'global.lowersolver' |
---|
148 | 'global.uppersolver' |
---|
149 | 'global.lpsolver' |
---|
150 | 'global.target' |
---|
151 | 'global.vartol' |
---|
152 | 'global.relgaptol' |
---|
153 | 'global.absgaptol' |
---|
154 | 'global.pdtol' |
---|
155 | 'global.eqtol' |
---|
156 | 'global.inttol' |
---|
157 | 'global.maxiter' |
---|
158 | 'global.maxtime' |
---|
159 | 'mpcvx.solver' |
---|
160 | 'mpcvx.eps' |
---|
161 | 'bpmpd.opts' |
---|
162 | 'sp.AbsTol' |
---|
163 | 'sp.RelTol' |
---|
164 | 'sp.nu' |
---|
165 | 'sp.tv' |
---|
166 | 'sp.Mfactor' |
---|
167 | 'sp.NTiters' |
---|
168 | 'maxdet.AbsTol' |
---|
169 | 'maxdet.RelTol' |
---|
170 | 'maxdet.gam' |
---|
171 | 'socp.AbsTol' |
---|
172 | 'socp.RelTol' |
---|
173 | 'socp.target' |
---|
174 | 'socp.max_iter' |
---|
175 | 'socp.nu' |
---|
176 | 'socp.outmode' |
---|
177 | 'sdpt3.vers' |
---|
178 | 'sdpt3.gam' |
---|
179 | 'sdpt3.predcorr' |
---|
180 | 'sdpt3.expon' |
---|
181 | 'sdpt3.gaptol' |
---|
182 | 'sdpt3.inftol' |
---|
183 | 'sdpt3.steptol' |
---|
184 | 'sdpt3.maxit' |
---|
185 | 'sdpt3.stoplevel' |
---|
186 | 'sdpt3.sw2PC_tol' |
---|
187 | 'sdpt3.use_corrprim' |
---|
188 | 'sdpt3.printyes' |
---|
189 | 'sdpt3.scale_data' |
---|
190 | 'sdpt3.schurfun' |
---|
191 | 'sdpt3.schurfun_parms' |
---|
192 | 'sdpt3.randnstate' |
---|
193 | 'sdpt3.spdensity' |
---|
194 | 'sdpt3.rmdepconstr' |
---|
195 | 'sdpt3.CACHE_SIZE' |
---|
196 | 'sdpt3.LOOP_LEVEL' |
---|
197 | 'sdpt3.cachesize' |
---|
198 | 'sdpt3.linsys_options' |
---|
199 | 'sdpt3.smallblkdim' |
---|
200 | 'sedumi.removeequalities' |
---|
201 | 'sedumi.alg' |
---|
202 | 'sedumi.beta' |
---|
203 | 'sedumi.theta' |
---|
204 | 'sedumi.free' |
---|
205 | 'sedumi.sdp' |
---|
206 | 'sedumi.stepdif' |
---|
207 | 'sedumi.w' |
---|
208 | 'sedumi.mu' |
---|
209 | 'sedumi.eps' |
---|
210 | 'sedumi.bigeps' |
---|
211 | 'sedumi.maxiter' |
---|
212 | 'sedumi.vplot' |
---|
213 | 'sedumi.stopat' |
---|
214 | 'sedumi.denq' |
---|
215 | 'sedumi.denf' |
---|
216 | 'sedumi.numtol' |
---|
217 | 'sedumi.bignumtol' |
---|
218 | 'sedumi.numlvl' |
---|
219 | 'sedumi.chol.skip' |
---|
220 | 'sedumi.chol.abstol' |
---|
221 | 'sedumi.chol.canceltol' |
---|
222 | 'sedumi.chol.maxu' |
---|
223 | 'sedumi.chol.maxuden' |
---|
224 | 'sedumi.chol.numlvl' |
---|
225 | 'sedumi.chol.deptol' |
---|
226 | 'sedumi.chol.ph1tol' |
---|
227 | 'sedumi.cg.qprec' |
---|
228 | 'sedumi.cg.restol' |
---|
229 | 'sedumi.cg.stagtol' |
---|
230 | 'sedumi.cg.maxiter' |
---|
231 | 'sedumi.cg.refine' |
---|
232 | 'dsdp.r0' |
---|
233 | 'dsdp.zbar' |
---|
234 | 'dsdp.penalty' |
---|
235 | 'dsdp.boundy' |
---|
236 | 'dsdp.gaptol' |
---|
237 | 'dsdp.maxit' |
---|
238 | 'dsdp.steptol' |
---|
239 | 'dsdp.inftol' |
---|
240 | 'dsdp.dual_bound' |
---|
241 | 'dsdp.dobjmin' |
---|
242 | 'dsdp.rho' |
---|
243 | 'dsdp.dynamicrho' |
---|
244 | 'dsdp.cc' |
---|
245 | 'dsdp.bigM' |
---|
246 | 'dsdp.mu0' |
---|
247 | 'dsdp.reuse' |
---|
248 | 'dsdp.lp_barrier' |
---|
249 | 'dsdp.objectiveconstant' |
---|
250 | 'dsdp.matrixfreesize' |
---|
251 | 'dsdp.scale_data' |
---|
252 | 'dsdp.maxlanczos' |
---|
253 | 'dsdp.max_trust_radius' |
---|
254 | 'dsdp.maxtrustradius' |
---|
255 | 'dsdp.max_mu_reduction' |
---|
256 | 'dsdp.max_infeasible_trust_radius' |
---|
257 | 'dsdp.max_infeasible_mu_reduction' |
---|
258 | 'sdplr.feastol' |
---|
259 | 'sdplr.centol' |
---|
260 | 'sdplr.dir' |
---|
261 | 'sdplr.penfac' |
---|
262 | 'sdplr.reduce' |
---|
263 | 'sdplr.limit' |
---|
264 | 'sdplr.maxrank' |
---|
265 | 'sdplr.soln_factored' |
---|
266 | 'sdpa.maxIteration' |
---|
267 | 'sdpa.epsilonStar' |
---|
268 | 'sdpa.lambdaStar' |
---|
269 | 'sdpa.omegaStar' |
---|
270 | 'sdpa.lowerBound' |
---|
271 | 'sdpa.upperBound' |
---|
272 | 'sdpa.betaStar' |
---|
273 | 'sdpa.betaBar' |
---|
274 | 'sdpa.gammaStar' |
---|
275 | 'sdpa.epsilonDash' |
---|
276 | 'sdpa.searchDir' |
---|
277 | 'sdpa.isSymmetric' |
---|
278 | 'glpk.lpsolver' |
---|
279 | 'glpk.scale' |
---|
280 | 'glpk.dual' |
---|
281 | 'glpk.price' |
---|
282 | 'glpk.relax' |
---|
283 | 'glpk.tolbnd' |
---|
284 | 'glpk.toldj' |
---|
285 | 'glpk.tolpiv' |
---|
286 | 'glpk.round' |
---|
287 | 'glpk.objll' |
---|
288 | 'glpk.objul' |
---|
289 | 'glpk.itlim' |
---|
290 | 'glpk.tmlim' |
---|
291 | 'glpk.branch' |
---|
292 | 'glpk.btrack' |
---|
293 | 'glpk.tolint' |
---|
294 | 'glpk.tolobj' |
---|
295 | 'glpk.presol' |
---|
296 | 'glpk.save' |
---|
297 | 'cplex.presol' |
---|
298 | 'cplex.niter' |
---|
299 | 'cplex.epgap' |
---|
300 | 'cplex.epagap' |
---|
301 | 'cplex.relobjdif' |
---|
302 | 'cplex.objdif' |
---|
303 | 'cplex.tilim' |
---|
304 | 'cplex.logfile' |
---|
305 | 'cplex.param.double' |
---|
306 | 'cplex.param.int' |
---|
307 | 'qsopt.dual' |
---|
308 | 'qsopt.primalprice' |
---|
309 | 'qsopt.dualprice' |
---|
310 | 'qsopt.scale' |
---|
311 | 'qsopt.maxiter' |
---|
312 | 'qsopt.maxtime' |
---|
313 | 'xpress.presol' |
---|
314 | 'xpress.niter' |
---|
315 | 'lpsolve.scalemode' |
---|
316 | 'cdd.method' |
---|
317 | 'clp.solver' |
---|
318 | 'clp.maxnumiterations' |
---|
319 | 'clp.maxnumseconds' |
---|
320 | 'clp.primaltolerance' |
---|
321 | 'clp.dualtolerance' |
---|
322 | 'clp.primalpivot' |
---|
323 | 'clp.dualpivot' |
---|
324 | 'pensdp.DEF' |
---|
325 | 'pensdp.PBM_MAX_ITER' |
---|
326 | 'pensdp.UM_MAX_ITER' |
---|
327 | 'pensdp.OUTPUT' |
---|
328 | 'pensdp.DENSE' |
---|
329 | 'pensdp.LS' |
---|
330 | 'pensdp.XOUT' |
---|
331 | 'pensdp.UOUT' |
---|
332 | 'pensdp.U0' |
---|
333 | 'pensdp.MU' |
---|
334 | 'pensdp.MU2' |
---|
335 | 'pensdp.PBM_EPS' |
---|
336 | 'pensdp.P_EPS' |
---|
337 | 'pensdp.UMIN' |
---|
338 | 'pensdp.ALPHA' |
---|
339 | 'pensdp.P0' |
---|
340 | 'penbmi.DEF' |
---|
341 | 'penbmi.PBM_MAX_ITER' |
---|
342 | 'penbmi.UM_MAX_ITER' |
---|
343 | 'penbmi.OUTPUT' |
---|
344 | 'penbmi.DENSE' |
---|
345 | 'penbmi.LS' |
---|
346 | 'penbmi.XOUT' |
---|
347 | 'penbmi.UOUT' |
---|
348 | 'penbmi.NWT_SYS_MODE' |
---|
349 | 'penbmi.PREC_TYPE' |
---|
350 | 'penbmi.DIMACS' |
---|
351 | 'penbmi.TR_MODE' |
---|
352 | 'penbmi.U0' |
---|
353 | 'penbmi.MU' |
---|
354 | 'penbmi.MU2' |
---|
355 | 'penbmi.PBM_EPS' |
---|
356 | 'penbmi.P_EPS' |
---|
357 | 'penbmi.UMIN' |
---|
358 | 'penbmi.ALPHA' |
---|
359 | 'penbmi.P0' |
---|
360 | 'penbmi.PEN_UP' |
---|
361 | 'penbmi.ALPHA_UP' |
---|
362 | 'penbmi.PRECISION' |
---|
363 | 'penbmi.PRECISION_2' |
---|
364 | 'penbmi.CG_TOL_DIR' |
---|
365 | |
---|
366 | 'pennlp.maxit' |
---|
367 | 'pennlp.nwtiters' |
---|
368 | 'pennlp.hessianmode' |
---|
369 | 'pennlp.autoscale' |
---|
370 | 'pennlp.convex' |
---|
371 | 'pennlp.eqltymode' |
---|
372 | 'pennlp.ignoreinit' |
---|
373 | 'pennlp.ncmode' |
---|
374 | 'pennlp.nwtstopcrit' |
---|
375 | 'pennlp.penalty' |
---|
376 | 'pennlp.nwtmode' |
---|
377 | 'pennlp.prec' |
---|
378 | 'pennlp.cmaxnzs' |
---|
379 | 'pennlp.autoini' |
---|
380 | 'pennlp.ipenup' |
---|
381 | 'pennlp.precision' |
---|
382 | 'pennlp.uinit' |
---|
383 | 'pennlp.pinit' |
---|
384 | 'pennlp.alpha' |
---|
385 | 'pennlp.mu' |
---|
386 | 'pennlp.dpenup' |
---|
387 | 'pennlp.peps' |
---|
388 | 'pennlp.umin' |
---|
389 | 'pennlp.preckkt' |
---|
390 | 'pennlp.cgtolmin' |
---|
391 | 'pennlp.cgtolup' |
---|
392 | 'pennlp.uinitbox' |
---|
393 | 'pennlp.uinitnc' |
---|
394 | |
---|
395 | 'lmirank.solver' |
---|
396 | 'lmirank.maxiter' |
---|
397 | 'lmirank.eps' |
---|
398 | 'lmirank.itermod' |
---|
399 | 'lmilab.reltol' |
---|
400 | 'lmilab.maxiter' |
---|
401 | 'lmilab.feasradius' |
---|
402 | 'lmilab.L' |
---|
403 | |
---|
404 | 'lindo.LS_IPARAM_NLP_SOLVER' |
---|
405 | 'lindo.LS_IPARAM_NLP_MAXLOCALSEARCH' |
---|
406 | 'lindo.METHOD' |
---|
407 | |
---|
408 | |
---|
409 | 'mosek.param' |
---|
410 | 'sos.model' |
---|
411 | 'sos.newton' |
---|
412 | 'sos.congruence' |
---|
413 | 'sos.scale' |
---|
414 | 'sos.numblkdg' |
---|
415 | 'sos.postprocess' |
---|
416 | 'sos.sparsetol' |
---|
417 | 'sos.impsparse' |
---|
418 | 'sos.extlp' |
---|
419 | 'sos.csp' |
---|
420 | 'sos.savedecomposition' |
---|
421 | 'sos.clean' |
---|
422 | 'sos.traceobj' |
---|
423 | 'sos.reuse' |
---|
424 | 'sos.inconsistent' |
---|
425 | 'sos.separable' |
---|
426 | 'csdp.axtol' |
---|
427 | 'csdp.atytol' |
---|
428 | 'csdp.objtol' |
---|
429 | 'csdp.pinftol' |
---|
430 | 'csdp.dinftol' |
---|
431 | 'csdp.maxiter' |
---|
432 | 'csdp.minstepfrac' |
---|
433 | 'csdp.maxstepfrac' |
---|
434 | 'csdp.minstepp' |
---|
435 | 'csdp.minstepd' |
---|
436 | 'csdp.usexzgap' |
---|
437 | 'csdp.tweakgap' |
---|
438 | 'specsdp.gatol1' |
---|
439 | 'specsdp.gatol2' |
---|
440 | 'specsdp.niter=20' |
---|
441 | 'specsdp.faiseps' |
---|
442 | 'specsdp.compleps' |
---|
443 | 'specsdp.stateps' |
---|
444 | 'specsdp.penfact' |
---|
445 | 'specsdp.penmin' |
---|
446 | 'specsdp.pendiv' |
---|
447 | 'specsdp.peneps' |
---|
448 | 'specsdp.Vinit' |
---|
449 | 'specsdp.radius' |
---|
450 | 'nag.featol' |
---|
451 | 'nag.itmax' |
---|
452 | 'nag.bigbnd' |
---|
453 | 'nag.orthog' |
---|
454 | 'kypd.solver' |
---|
455 | 'kypd.lyapunovsolver' |
---|
456 | 'kypd.reduce' |
---|
457 | 'kypd.transform' |
---|
458 | 'kypd.rho' |
---|
459 | 'kypd.tol' |
---|
460 | 'kypd.lowrank' |
---|
461 | 'moment.order' |
---|
462 | 'moment.blockdiag' |
---|
463 | 'moment.solver' |
---|
464 | 'moment.refine' |
---|
465 | 'moment.extractrank' |
---|
466 | 'moment.rceftol' |
---|
467 | }; |
---|
468 | |
---|
469 | % Try to run optimset |
---|
470 | [Names,quadprognames,quadprogops] = trytoset('quadprog',Names); |
---|
471 | [Names,linprognames,linprogops] = trytoset('linprog',Names); |
---|
472 | [Names,bintprognames,bintprogops] = trytoset('bintprog',Names); |
---|
473 | [Names,fminconnames,fminconops] = trytoset('fmincon',Names); |
---|
474 | [Names,fminsearchnames,fminsearchops] = trytoset('fminsearch',Names); |
---|
475 | |
---|
476 | obsoletenames ={ |
---|
477 | 'abstol' |
---|
478 | 'reltol' |
---|
479 | 'accelerator' |
---|
480 | 'maxiters' |
---|
481 | 'abstol_init' |
---|
482 | 'reltol_init' |
---|
483 | 'accelerator_init' |
---|
484 | 'maxiters_init' |
---|
485 | 'tv' |
---|
486 | 'mfactor' |
---|
487 | 'sedumi.maxradius' |
---|
488 | 'sedumi.uselpsolver' |
---|
489 | 'sedumi.removeequalities' |
---|
490 | 'silent' |
---|
491 | 'sos.solvedual' |
---|
492 | 'reduce' |
---|
493 | 'penbmi.pbm_eps'}; |
---|
494 | |
---|
495 | [m,n] = size(Names); |
---|
496 | names = lower(Names); |
---|
497 | |
---|
498 | if (nargin>0) & isstruct(varargin{1}) |
---|
499 | options = varargin{1}; |
---|
500 | paramstart = 2; |
---|
501 | else |
---|
502 | paramstart = 1; |
---|
503 | % YALMIP options |
---|
504 | options.solver = ''; |
---|
505 | options.verbose = 1; |
---|
506 | options.dimacs = 1; |
---|
507 | options.warning = 1; |
---|
508 | options.cachesolvers = 0; |
---|
509 | options.beeponproblem = [-5 -4 -3 -2 -1]; |
---|
510 | options.showprogress = 0; |
---|
511 | options.saveduals = 1; |
---|
512 | options.removeequalities = 0; |
---|
513 | options.savesolveroutput = 0; |
---|
514 | options.savesolverinput = 0; |
---|
515 | options.convertconvexquad = 1; |
---|
516 | options.radius = inf; |
---|
517 | options.relax = 0; |
---|
518 | options.dualize = 0; |
---|
519 | options.usex0 = 0; |
---|
520 | options.shift = 0; |
---|
521 | options.savedebug = 0; |
---|
522 | options.debug = 0; |
---|
523 | options.expand = 1; |
---|
524 | options.allowmilp = 1; |
---|
525 | options.allownonconvex = 0; |
---|
526 | |
---|
527 | options.sos.model = 0; |
---|
528 | options.sos.newton = 1; |
---|
529 | options.sos.congruence = 2; |
---|
530 | options.sos.scale = 1; |
---|
531 | options.sos.numblkdg = 0; |
---|
532 | options.sos.postprocess = 0; |
---|
533 | options.sos.csp = 0; |
---|
534 | options.sos.extlp = 1; |
---|
535 | options.sos.impsparse = 0; |
---|
536 | options.sos.sparsetol = 1e-5; |
---|
537 | options.sos.inconsistent = 0; |
---|
538 | options.sos.clean = eps; |
---|
539 | options.sos.savedecomposition = 1; |
---|
540 | options.sos.traceobj = 0; |
---|
541 | options.sos.reuse = 1; |
---|
542 | |
---|
543 | options.moment.order = []; |
---|
544 | options.moment.blockdiag = 0; |
---|
545 | options.moment.solver = ''; |
---|
546 | options.moment.refine = 0; |
---|
547 | options.moment.extractrank = 0; |
---|
548 | options.moment.rceftol = -1; |
---|
549 | |
---|
550 | options.bnb.branchrule = 'max'; |
---|
551 | options.bnb.method = 'depthbest'; |
---|
552 | options.bnb.verbose = 1; |
---|
553 | options.bnb.solver = ''; |
---|
554 | options.bnb.uppersolver = 'rounder'; |
---|
555 | options.bnb.presolve = 0; |
---|
556 | options.bnb.inttol = 1e-4; |
---|
557 | options.bnb.feastol = 1e-7; |
---|
558 | options.bnb.gaptol = 1e-4; |
---|
559 | options.bnb.weight = []; |
---|
560 | options.bnb.nodetight = 0; |
---|
561 | options.bnb.nodefix = 0; |
---|
562 | |
---|
563 | options.bnb.round = 1; |
---|
564 | options.bnb.maxiter = 300; |
---|
565 | |
---|
566 | options.bnb.prunetol = 1e-4; |
---|
567 | options.bnb.multiple = 0; |
---|
568 | |
---|
569 | try |
---|
570 | options.bpmpd.opts = bpopt; |
---|
571 | catch |
---|
572 | options.bpmpd.opts =[]; |
---|
573 | end |
---|
574 | |
---|
575 | |
---|
576 | % Options for global BMI solver |
---|
577 | options.bmibnb.branchmethod = 'best'; |
---|
578 | options.bmibnb.branchrule = 'omega'; |
---|
579 | options.bmibnb.sdpcuts = 0; |
---|
580 | options.bmibnb.lpreduce = 1; |
---|
581 | options.bmibnb.lowrank = 0; |
---|
582 | options.bmibnb.lowersolver = ''; |
---|
583 | options.bmibnb.uppersolver = ''; |
---|
584 | options.bmibnb.lpsolver = ''; |
---|
585 | options.bmibnb.target = -inf; |
---|
586 | options.bmibnb.vartol = 1e-3; |
---|
587 | options.bmibnb.relgaptol = 1e-2; |
---|
588 | options.bmibnb.absgaptol = 1e-2; |
---|
589 | options.bmibnb.pdtol = -1e-6; |
---|
590 | options.bmibnb.eqtol = 1e-6; |
---|
591 | options.bmibnb.maxiter = 100; |
---|
592 | options.bmibnb.maxtime = 3600; |
---|
593 | options.bmibnb.roottight = 1; |
---|
594 | options.bmibnb.numglobal = inf; |
---|
595 | |
---|
596 | options.cutsdp.solver = ''; |
---|
597 | options.cutsdp.maxiter = 100; |
---|
598 | options.cutsdp.cutlimit = inf; |
---|
599 | options.cutsdp.feastol = -1e-8; |
---|
600 | options.cutsdp.recoverdual = 0; |
---|
601 | options.cutsdp.variablebound = inf; |
---|
602 | options.cutsdp.nodefix = 0; |
---|
603 | options.cutsdp.nodetight = 0; |
---|
604 | |
---|
605 | options.mp.algorithm = 1; |
---|
606 | options.mp.simplify = 0; |
---|
607 | options.mp.presolve = 0; |
---|
608 | options.mp.unbounded = 0; |
---|
609 | |
---|
610 | options.global.branchmethod = 'best'; |
---|
611 | options.global.branchrule = 'omega'; |
---|
612 | options.global.lowersolver = ''; |
---|
613 | options.global.uppersolver = ''; |
---|
614 | options.global.lpsolver = ''; |
---|
615 | options.global.sdpcuts = 0; |
---|
616 | options.global.lpreduce = 1; |
---|
617 | options.global.roottight = 1; |
---|
618 | options.global.lowrank = 0; |
---|
619 | options.global.target = -inf; |
---|
620 | options.global.vartol = 1e-3; |
---|
621 | options.global.relgaptol = 1e-2; |
---|
622 | options.global.absgaptol = 1e-2; |
---|
623 | options.global.pdtol = -1e-6; |
---|
624 | options.global.eqtol = 1e-6; |
---|
625 | options.global.inttol = 1e-4; |
---|
626 | options.global.round = 1; |
---|
627 | options.global.maxiter = 100; |
---|
628 | options.global.maxtime = 3600; |
---|
629 | |
---|
630 | % Options for approximate multi-parametric |
---|
631 | % options.mpcvx.solver = ''; |
---|
632 | % options.mpcvx.eps = 0.25; |
---|
633 | |
---|
634 | options.cdd.method = 'criss-cross'; |
---|
635 | |
---|
636 | options.clp.solver = 1; |
---|
637 | options.clp.maxnumiterations = 99999999; |
---|
638 | options.clp.maxnumseconds = 3600; |
---|
639 | options.clp.primaltolerance = 1e-7; |
---|
640 | options.clp.dualtolerance = 1e-7; |
---|
641 | options.clp.primalpivot = 1; |
---|
642 | options.clp.dualpivot = 1; |
---|
643 | |
---|
644 | options.cplex.presol = 1; |
---|
645 | options.cplex.niter = 1; |
---|
646 | options.cplex.epgap = 1e-4; |
---|
647 | options.cplex.epagap = 1e-6; |
---|
648 | options.cplex.relobjdif = 0.0; |
---|
649 | options.cplex.objdif = 0.0; |
---|
650 | options.cplex.tilim = 1e75; |
---|
651 | options.cplex.logfile = 0; |
---|
652 | options.cplex.param.double = []; |
---|
653 | options.cplex.param.int = []; |
---|
654 | |
---|
655 | options.csdp.axtol = 1e-8; |
---|
656 | options.csdp.atytol = 1e-8; |
---|
657 | options.csdp.objtol = 1e-8; |
---|
658 | options.csdp.pinftol = 1e8; |
---|
659 | options.csdp.dinftol = 1e8; |
---|
660 | options.csdp.maxiter = 100; |
---|
661 | options.csdp.minstepfrac = 0.90; |
---|
662 | options.csdp.maxstepfrac = 0.97; |
---|
663 | options.csdp.minstepp = 1e-8; |
---|
664 | options.csdp.minstepd = 1e-8; |
---|
665 | options.csdp.usexzgap = 1; |
---|
666 | options.csdp.tweakgap = 0; |
---|
667 | |
---|
668 | options.mosek.param = []; |
---|
669 | |
---|
670 | % Options for DSDP 5.6 |
---|
671 | options.dsdp.r0 = -1; |
---|
672 | options.dsdp.zbar = 0; |
---|
673 | options.dsdp.penalty = 1e8; |
---|
674 | options.dsdp.boundy = 1e6; |
---|
675 | options.dsdp.gaptol = 1e-7; |
---|
676 | options.dsdp.maxit = 500; |
---|
677 | options.dsdp.steptol=5e-2; |
---|
678 | options.dsdp.inftol=1e-8; |
---|
679 | options.dsdp.dual_bound = 1e20; |
---|
680 | options.dsdp.rho = 3; |
---|
681 | options.dsdp.dynamicrho = 1; |
---|
682 | options.dsdp.bigM = 0; |
---|
683 | options.dsdp.mu0 = -1; |
---|
684 | options.dsdp.reuse = 4; |
---|
685 | options.dsdp.lp_barrier = 1; |
---|
686 | |
---|
687 | % Older versions |
---|
688 | options.dsdp.objectiveconstant = 0; |
---|
689 | options.dsdp.matrixfreesize = 3000; |
---|
690 | options.dsdp.scale_data = 1; |
---|
691 | options.dsdp.max_trust_radius = -1; |
---|
692 | options.dsdp.maxtrustradius = 1e10; |
---|
693 | options.dsdp.max_infeasible_trust_radius = -1; |
---|
694 | options.dsdp.max_infeasible_mu_reduction = 2; |
---|
695 | options.dsdp.max_mu_reduction = 1e8; |
---|
696 | options.dsdp.maxlanczos = 20; |
---|
697 | |
---|
698 | % Options for GLPK |
---|
699 | options.glpk.lpsolver = 1; |
---|
700 | options.glpk.scale = 1; |
---|
701 | options.glpk.dual = 0; |
---|
702 | options.glpk.price = 1; |
---|
703 | options.glpk.relax = 0.07; |
---|
704 | options.glpk.tolbnd = 1e-7; |
---|
705 | options.glpk.toldj = 1e-7; |
---|
706 | options.glpk.tolpiv = 1e-9; |
---|
707 | options.glpk.round = 0; |
---|
708 | options.glpk.objll = -1e12; |
---|
709 | options.glpk.objul = 1e12; |
---|
710 | options.glpk.itlim = 1e4; |
---|
711 | options.glpk.tmlim = -1; |
---|
712 | options.glpk.branch = 2; |
---|
713 | options.glpk.btrack = 2; |
---|
714 | options.glpk.tolint = 1e-6; |
---|
715 | options.glpk.tolobj = 1e-7; |
---|
716 | options.glpk.presol = 1; |
---|
717 | options.glpk.save = 0; |
---|
718 | |
---|
719 | % options.specsdp.gatol1 = 5d-1; |
---|
720 | % options.specsdp.gatol2 = 5d-3; |
---|
721 | % options.specsdp.niter=20; |
---|
722 | % options.specsdp.faiseps=1d-8; |
---|
723 | % options.specsdp.compleps=1d-6; |
---|
724 | % options.specsdp.stateps=1e-6; |
---|
725 | % options.specsdp.penfact=2; |
---|
726 | % options.specsdp.penmin=300; |
---|
727 | % options.specsdp.pendiv= 5; |
---|
728 | % options.specsdp.peneps=1.0d-8; |
---|
729 | % options.specsdp.Vinit = 1.0; |
---|
730 | % options.specsdp.radius= 1e9; |
---|
731 | |
---|
732 | options.kypd.solver = ''; |
---|
733 | options.kypd.lyapunovsolver = 'schur'; |
---|
734 | options.kypd.reduce = 0; |
---|
735 | options.kypd.transform = 0; |
---|
736 | options.kypd.rho = 1; |
---|
737 | options.kypd.tol = 1e-8; |
---|
738 | options.kypd.lowrank = 0; |
---|
739 | |
---|
740 | options.lmilab.reltol = 1e-3; |
---|
741 | options.lmilab.maxiter = 100; |
---|
742 | options.lmilab.feasradius = 1e9; |
---|
743 | options.lmilab.L = 10; |
---|
744 | |
---|
745 | options.lmirank.solver = ''; |
---|
746 | options.lmirank.maxiter = 100; |
---|
747 | options.lmirank.maxiter = 1000; |
---|
748 | options.lmirank.eps = 1e-9; |
---|
749 | options.lmirank.itermod = 1; |
---|
750 | |
---|
751 | options.lindo.LS_IPARAM_NLP_SOLVER = 'LS_NMETHOD_MSW_GRG'; |
---|
752 | options.lindo.LS_IPARAM_NLP_MAXLOCALSEARCH = 1; |
---|
753 | options.lindo.LS_METHOD = 'LS_METHOD_FREE'; |
---|
754 | |
---|
755 | options.lpsolve.scalemode = 0; |
---|
756 | |
---|
757 | % Options for MAXDET solver |
---|
758 | options.maxdet.AbsTol = 1e-6; |
---|
759 | options.maxdet.RelTol = 1e-6; |
---|
760 | options.maxdet.gam = 25; |
---|
761 | options.maxdet.NTiters= 50; |
---|
762 | |
---|
763 | options.nag.featol = sqrt(eps); |
---|
764 | options.nag.itmax = 500; |
---|
765 | options.nag.bigbnd = 1e10; |
---|
766 | options.nag.orthog = 0; |
---|
767 | |
---|
768 | options.penbmi.DEF = 1; |
---|
769 | options.penbmi.PBM_MAX_ITER = 50; |
---|
770 | options.penbmi.UM_MAX_ITER = 100; |
---|
771 | options.penbmi.OUTPUT = 1; |
---|
772 | options.penbmi.DENSE = 1; %!0 |
---|
773 | options.penbmi.LS = 0; |
---|
774 | options.penbmi.XOUT = 0; |
---|
775 | options.penbmi.UOUT = 0; |
---|
776 | options.penbmi.NWT_SYS_MODE = 0; |
---|
777 | options.penbmi.PREC_TYPE = 0; |
---|
778 | options.penbmi.DIMACS = 0; |
---|
779 | options.penbmi.TR_MODE = 0; |
---|
780 | options.penbmi.U0 = 1; |
---|
781 | options.penbmi.MU = 0.7; |
---|
782 | options.penbmi.MU2 = 0.5; %!0.1 |
---|
783 | % options.penbmi.PBM_EPS = 1e-6; %!1e-7 |
---|
784 | options.penbmi.PRECISION = 1e-6; %!1e-7 |
---|
785 | options.penbmi.P_EPS = 1e-4; %!1e-6 |
---|
786 | options.penbmi.UMIN = 1e-14; |
---|
787 | options.penbmi.ALPHA = 1e-2; |
---|
788 | options.penbmi.P0 = 0.1; %!0.01 |
---|
789 | options.penbmi.PEN_UP = 0.5; %!0 |
---|
790 | options.penbmi.ALPHA_UP = 1.0; |
---|
791 | options.penbmi.PRECISION_2 = 1e-6; %!1e-7 |
---|
792 | options.penbmi.CG_TOL_DIR = 5e-2; |
---|
793 | |
---|
794 | options.pennlp.maxit = 100; |
---|
795 | options.pennlp.nwtiters = 100; |
---|
796 | options.pennlp.hessianmode = 0; |
---|
797 | options.pennlp.autoscale = 1; |
---|
798 | options.pennlp.convex = 0; |
---|
799 | options.pennlp.eqltymode = 1; |
---|
800 | options.pennlp.ignoreinit = 0; |
---|
801 | options.pennlp.ncmode = 0; |
---|
802 | options.pennlp.nwtstopcrit = 2; |
---|
803 | options.pennlp.penalty = 0; |
---|
804 | options.pennlp.nwtmode = 0; |
---|
805 | options.pennlp.prec = 0; |
---|
806 | options.pennlp.cmaxnzs =-1; |
---|
807 | options.pennlp.autoini = 1; |
---|
808 | options.pennlp.ipenup = 1; |
---|
809 | |
---|
810 | options.pennlp.precision = 1e-7; |
---|
811 | options.pennlp.uinit = 1; |
---|
812 | options.pennlp.pinit = 1; |
---|
813 | options.pennlp.alpha = 0.01; |
---|
814 | options.pennlp.mu = 0.5; |
---|
815 | options.pennlp.dpenup = 0.1; |
---|
816 | options.pennlp.peps = 1e-8; |
---|
817 | options.pennlp.umin = 1e-12; |
---|
818 | options.pennlp.preckkt = 1e-1; |
---|
819 | options.pennlp.cgtolmin = 5e-2; |
---|
820 | options.pennlp.cgtolup = 1; |
---|
821 | options.pennlp.uinitbox = 1; |
---|
822 | options.pennlp.uinitnc = 1; |
---|
823 | |
---|
824 | |
---|
825 | options.pensdp.DEF = 1; |
---|
826 | options.pensdp.PBM_MAX_ITER = 50; |
---|
827 | options.pensdp.UM_MAX_ITER = 100; |
---|
828 | options.pensdp.OUTPUT = 1; |
---|
829 | options.pensdp.DENSE = 0; |
---|
830 | options.pensdp.LS = 0; |
---|
831 | options.pensdp.XOUT = 0; |
---|
832 | options.pensdp.UOUT = 0; |
---|
833 | options.pensdp.U0 = 1; |
---|
834 | options.pensdp.MU = 0.7; |
---|
835 | options.pensdp.MU2 = 0.1; |
---|
836 | options.pensdp.PBM_EPS = 1e-7; |
---|
837 | options.pensdp.P_EPS = 1e-6; |
---|
838 | options.pensdp.UMIN = 1e-14; |
---|
839 | options.pensdp.ALPHA = 1e-2; |
---|
840 | options.pensdp.P0 = 0.9; |
---|
841 | |
---|
842 | % Options for SDPA |
---|
843 | options.sdpa.maxIteration = 40 ; |
---|
844 | options.sdpa.epsilonStar = 1.0E-7; |
---|
845 | options.sdpa.lambdaStar = 1.0E2 ; |
---|
846 | options.sdpa.omegaStar = 2.0 ; |
---|
847 | options.sdpa.lowerBound = -1.0E5 ; |
---|
848 | options.sdpa.upperBound = 1.0E5 ; |
---|
849 | options.sdpa.betaStar = 0.1 ; |
---|
850 | options.sdpa.betaBar = 0.2 ; |
---|
851 | options.sdpa.gammaStar = 0.9 ; |
---|
852 | options.sdpa.epsilonDash = 1.0E-7 ; |
---|
853 | options.sdpa.searchDir = 1 ; |
---|
854 | options.sdpa.isSymmetric = 0 ; |
---|
855 | |
---|
856 | options.sdplr.feastol = 1e-5; |
---|
857 | options.sdplr.centol = 1e-1; |
---|
858 | options.sdplr.dir = 1; |
---|
859 | options.sdplr.penfac = 2; |
---|
860 | options.sdplr.reduce = 1; |
---|
861 | options.sdplr.limit = 3600; |
---|
862 | options.sdplr.soln_factored = 0; |
---|
863 | options.sdplr.maxrank = 0; |
---|
864 | |
---|
865 | % Options for SDPT3 (2.3 -> 3.01) |
---|
866 | options.sdpt3.vers = 1; |
---|
867 | options.sdpt3.gam = 0; |
---|
868 | options.sdpt3.predcorr = 1; |
---|
869 | options.sdpt3.expon = 1; |
---|
870 | options.sdpt3.gaptol = 1e-7; |
---|
871 | options.sdpt3.inftol = 1e-7; |
---|
872 | options.sdpt3.steptol = 1e-6; |
---|
873 | options.sdpt3.maxit = 50; |
---|
874 | options.sdpt3.stoplevel= 1; |
---|
875 | options.sdpt3.sw2PC_tol = inf; |
---|
876 | options.sdpt3.use_corrprim = 0; |
---|
877 | options.sdpt3.printyes = 1; |
---|
878 | options.sdpt3.scale_data = 0; |
---|
879 | options.sdpt3.schurfun = []; |
---|
880 | options.sdpt3.schurfun_parms = []; |
---|
881 | options.sdpt3.randnstate = 0; |
---|
882 | options.sdpt3.spdensity = 0.5; |
---|
883 | options.sdpt3.rmdepconstr = 0; |
---|
884 | options.sdpt3.CACHE_SIZE = 256; |
---|
885 | options.sdpt3.LOOP_LEVEL = 8; |
---|
886 | options.sdpt3.cachesize = 256; |
---|
887 | options.sdpt3.linsys_options = 'raugmatsys'; |
---|
888 | options.sdpt3.smallblkdim = 30; |
---|
889 | |
---|
890 | % Options for SeDuMi (1.03 -> 1.05) |
---|
891 | options.sedumi.alg = 2; |
---|
892 | options.sedumi.beta = 0.5; |
---|
893 | options.sedumi.theta = 0.25; |
---|
894 | options.sedumi.free = 1; |
---|
895 | options.sedumi.sdp = 0; |
---|
896 | options.sedumi.stepdif= 0; |
---|
897 | options.sedumi.w = [1 1]; |
---|
898 | options.sedumi.mu = 1.0; |
---|
899 | options.sedumi.eps = 1e-9; |
---|
900 | options.sedumi.bigeps = 1e-3; |
---|
901 | options.sedumi.maxiter= 150; |
---|
902 | options.sedumi.vplot = 0; |
---|
903 | options.sedumi.stopat = -1; |
---|
904 | options.sedumi.denq = 0.75; |
---|
905 | options.sedumi.denf = 10; |
---|
906 | options.sedumi.numtol = 5e-7; |
---|
907 | options.sedumi.bignumtol = 0.9; |
---|
908 | options.sedumi.numlvlv = 0; |
---|
909 | options.sedumi.chol.skip = 1; |
---|
910 | options.sedumi.chol.canceltol = 1e-12; |
---|
911 | options.sedumi.chol.maxu = 5e5; |
---|
912 | options.sedumi.chol.abstol = 1e-20; |
---|
913 | options.sedumi.chol.maxuden= 5e2; |
---|
914 | options.sedumi.cg.maxiter = 25; |
---|
915 | options.sedumi.cg.restol = 5e-3; |
---|
916 | options.sedumi.cg.refine = 1; |
---|
917 | options.sedumi.cg.stagtol = 5e-14; |
---|
918 | options.sedumi.cg.qprec = 0; |
---|
919 | options.sedumi.maxradius = inf; |
---|
920 | |
---|
921 | |
---|
922 | options.qsopt.dual = 0; |
---|
923 | options.qsopt.primalprice = 1; |
---|
924 | options.qsopt.dualprice = 6; |
---|
925 | options.qsopt.scale = 1; |
---|
926 | options.qsopt.maxiter = 300000; |
---|
927 | options.qsopt.maxtime = 10000.0; |
---|
928 | |
---|
929 | options.xpress.presol = 1; |
---|
930 | options.xpress.niter = 1; |
---|
931 | |
---|
932 | try |
---|
933 | % Maybe we already created these above |
---|
934 | if exist('fminconops','var') |
---|
935 | options.quadprog = quadprogops; |
---|
936 | options.linprog = linprogops; |
---|
937 | options.bintprog = bintprogops; |
---|
938 | options.fmincon = fminconops; |
---|
939 | options.fminsearch = fminsearchops; |
---|
940 | else |
---|
941 | options.quadprog = optimset('quadprog'); |
---|
942 | options.linprog = optimset('linprog'); |
---|
943 | options.bintprog = optimset('linprog'); |
---|
944 | options.fmincon = optimset('fmincon'); |
---|
945 | options.fminsearch = optimset('fminsearch'); |
---|
946 | end |
---|
947 | catch |
---|
948 | try |
---|
949 | % Ok, what about tomlab then? |
---|
950 | options.quadprog = optimset; |
---|
951 | options.linprog = optimset; |
---|
952 | options.bintprog = optimset; |
---|
953 | options.fmincon = optimset; |
---|
954 | options.fminsearch = optimset; |
---|
955 | catch |
---|
956 | options.quadprog = []; |
---|
957 | options.linprog = []; |
---|
958 | options.bintprog = []; |
---|
959 | options.fmincon = []; |
---|
960 | options.fminsearch = []; |
---|
961 | end |
---|
962 | end |
---|
963 | end |
---|
964 | |
---|
965 | i = paramstart; |
---|
966 | % A finite state machine to parse name-value pairs. |
---|
967 | if rem(nargin-i+1,2) ~= 0 |
---|
968 | error('Arguments must occur in name-value pairs.'); |
---|
969 | end |
---|
970 | expectval = 0; % start expecting a name, not a value |
---|
971 | while i <= nargin |
---|
972 | arg = varargin{i}; |
---|
973 | |
---|
974 | if ~expectval |
---|
975 | if ~isstr(arg) |
---|
976 | error(sprintf('Expected argument %d to be a string property name.', i)); |
---|
977 | end |
---|
978 | |
---|
979 | lowArg = lower(arg); |
---|
980 | |
---|
981 | j_old = strmatch(lowArg,obsoletenames); |
---|
982 | if ~isempty(j_old) |
---|
983 | % For compability... |
---|
984 | |
---|
985 | if strcmp(lowArg,'sedumi.removeequalities') |
---|
986 | lowArg = 'removeequalities'; |
---|
987 | arg = lowArg; |
---|
988 | |
---|
989 | elseif strcmp(lowArg,'silent') |
---|
990 | lowArg = 'verbose'; |
---|
991 | if varargin{i+1}==1 |
---|
992 | varargin{i+1} = 0; |
---|
993 | else |
---|
994 | varargin{i+1} = 1; |
---|
995 | end |
---|
996 | warning('The field ''silent'' is obsolete. Use ''verbose'' instead') |
---|
997 | elseif strcmp(lowArg,'sedumi.maxradius') |
---|
998 | lowArg = 'radius'; |
---|
999 | arg = lowArg; |
---|
1000 | warning('The field ''sedumi.maxradius'' is obsolete. Use ''radius'' instead') |
---|
1001 | elseif strcmp(lowArg,'penbmi.pbm_eps') |
---|
1002 | lowArg = 'penbmi.precision'; |
---|
1003 | arg = lowArg; |
---|
1004 | warning('The field ''penbmi.pbm_eps'' is obsolete. Use ''penbmi.precision'' instead') |
---|
1005 | elseif strcmp(lowArg,'sos.solvedual') |
---|
1006 | lowArg = 'sos.model'; |
---|
1007 | arg = lowArg; |
---|
1008 | else |
---|
1009 | error(sprintf('The property name ''%s'' is obsolete. Sorry...', arg)); |
---|
1010 | end |
---|
1011 | end |
---|
1012 | |
---|
1013 | j = strmatch(lowArg,names); |
---|
1014 | if isempty(j) % if no matches |
---|
1015 | error(sprintf('Unrecognized property name ''%s''.', arg)); |
---|
1016 | elseif length(j) > 1 % if more than one match |
---|
1017 | % Check for any exact matches (in case any names are subsets of others) |
---|
1018 | k = strmatch(lowArg,names,'exact'); |
---|
1019 | if length(k) == 1 |
---|
1020 | j = k; |
---|
1021 | else |
---|
1022 | msg = sprintf('Ambiguous property name ''%s'' ', arg); |
---|
1023 | msg = [msg '(' deblank(Names{j(1)})]; |
---|
1024 | for k = j(2:length(j))' |
---|
1025 | msg = [msg ', ' deblank(Names{k})]; |
---|
1026 | end |
---|
1027 | msg = sprintf('%s).', msg); |
---|
1028 | error(msg); |
---|
1029 | end |
---|
1030 | end |
---|
1031 | expectval = 1; % we expect a value next |
---|
1032 | else |
---|
1033 | eval(['options.' Names{j} '= arg;']); |
---|
1034 | expectval = 0; |
---|
1035 | end |
---|
1036 | i = i + 1; |
---|
1037 | end |
---|
1038 | |
---|
1039 | if expectval |
---|
1040 | error(sprintf('Expected value for property ''%s''.', arg)); |
---|
1041 | end |
---|
1042 | |
---|
1043 | |
---|
1044 | function [Names,solvernames,solverops] = trytoset(solver,Names) |
---|
1045 | |
---|
1046 | try |
---|
1047 | solverops = optimset(solver); |
---|
1048 | solvernames = fieldnames(solverops); |
---|
1049 | |
---|
1050 | if any(strcmp(solvernames,'LargeScale')) |
---|
1051 | solverops.LargeScale = 'off'; |
---|
1052 | else |
---|
1053 | solvernames{end+1} = 'LargeScale'; |
---|
1054 | solverops.LargeScale = 'off'; |
---|
1055 | end |
---|
1056 | |
---|
1057 | for i = 1:length(solvernames) |
---|
1058 | Names = [Names;{[solver '.' solvernames{i}]}]; |
---|
1059 | end |
---|
1060 | |
---|
1061 | catch |
---|
1062 | solvernames = {'LargeScale'}; |
---|
1063 | solverops = struct('LargeScale','off'); |
---|
1064 | end |
---|
1065 | |
---|