This is a static copy of a profile reportHome
funfun/private/optimoptioncheckfield (1720 calls, 0.164 sec)
Generated 05-Aug-2011 13:03:54 using cpu time.
function in file /usr/local/MATLAB/R2011a/toolbox/matlab/funfun/private/optimoptioncheckfield.m
Copy to new window for comparing multiple runs
Parents (calling functions)
Lines where the most time was spent
Line Number | Code | Calls | Total Time | % Time | Time Plot |
96 | [validvalue, errmsg, errid] = ... | 1720 | 0.098 s | 60.0% |  |
95 | if ~iscell(value) | 1720 | 0.011 s | 6.7% |  |
63 | case {'TypicalX'} | 1720 | 0.011 s | 6.7% |  |
48 | case {'MaxPCGIter'} | 1720 | 0.011 s | 6.7% |  |
24 | switch field | 1720 | 0.011 s | 6.7% |  |
All other lines | | | 0.022 s | 13.3% |  |
Totals | | | 0.164 s | 100% | |
Children (called functions)
Code Analyzer results
Coverage results
[ Show coverage for parent directory ]
Total lines in function | 165 |
Non-code lines (comments, blank lines) | 69 |
Code lines (lines that can run) | 96 |
Code lines that did run | 26 |
Code lines that did not run | 70 |
Coverage (did run/can run) | 27.08 % |
Function listing
time calls line
1 function [validvalue, errmsg, errid, validfield] = optimoptioncheckfield(field,value)
2 %OPTIMOPTIONCHECKFIELD Check validity of structure field contents.
3 %
4 % This is a helper function for OPTIMSET and OPTIMGET.
5
6 % [VALIDVALUE, ERRMSG, ERRID, VALIDFIELD] = OPTIMOPTIONCHECKFIELD('field',V)
7 % checks the contents of the specified value V to be valid for the field 'field'.
8
9 % Copyright 1990-2010 The MathWorks, Inc.
10 % $Revision: 1.1.10.6 $ $Date: 2010/11/17 11:26:45 $
11
12 % empty matrix is always valid
1720 13 if isempty(value)
14 validvalue = true;
15 errmsg = '';
16 errid = '';
17 validfield = true;
18 return
19 end
20
21 % Some fields are checked in optimset/checkfield: Display, MaxFunEvals, MaxIter,
22 % OutputFcn, TolFun, TolX. Some are checked in both (e.g., MaxFunEvals).
1720 23 validfield = true;
0.01 1720 24 switch field
1720 25 case {'TolCon','TolPCG','ActiveConstrTol',...
26 'DiffMaxChange','DiffMinChange','TolXInteger','MaxTime', ...
27 'NodeDisplayInterval','RelLineSrchBnd','TolProjCGAbs', ...
28 'TolProjCG','TolGradCon','TolConSQP'}
29 % non-negative real scalar
30 [validvalue, errmsg, errid] = nonNegReal(field,value);
1720 31 case {'TolRLPFun'}
32 % real scalar in the range [1.0e-9, 1.0e-5]
33 [validvalue, errmsg, errid] = boundedReal(field,value,[1e-9, 1e-5]);
1720 34 case {'ObjectiveLimit'}
35 [validvalue, errmsg, errid] = realLessThanPlusInf(field,value);
1720 36 case {'MaxFunEvals'}
37 [validvalue, errmsg, errid] = nonNegInteger(field,value,{'100*numberofvariables'}); % fmincon
1720 38 case {'MaxIter'}
39 [validvalue, errmsg, errid] = nonNegInteger(field,value,{'100000*numberofvariables'}); % bintprog
1720 40 case {'LargeScale','DerivativeCheck','Diagnostics','GradConstr','GradObj',...
41 'Jacobian','LevenbergMarquardt', 'Simplex', ...
42 'NoStopIfFlatInfeas','PhaseOneTotalScaling'}
43 % off, on
44 [validvalue, errmsg, errid] = stringsType(field,value,{'on';'off'});
1720 45 case {'PrecondBandWidth','MinAbsMax','GoalsExactAchieve','RelLineSrchBndDuration'}
46 % integer including inf
47 [validvalue, errmsg, errid] = nonNegInteger(field,value);
0.01 1720 48 case {'MaxPCGIter'}
49 % integer including inf or default string
50 [validvalue, errmsg, errid] = nonNegInteger(field,value,{'max(1,floor(numberofvariables/2))','numberofvariables'});
1720 51 case {'MaxProjCGIter'}
52 % integer including inf or default string
53 [validvalue, errmsg, errid] = nonNegInteger(field,value,'2*(numberofvariables-numberofequalities)');
1720 54 case {'MaxSQPIter'}
55 % integer including inf or default
56 [validvalue, errmsg, errid] = nonNegInteger(field,value,'10*max(numberofvariables,numberofinequalities+numberofbounds)');
1720 57 case {'JacobPattern'}
58 % matrix or default string
59 [validvalue, errmsg, errid] = matrixType(field,value,'sparse(ones(jrows,jcols))');
1720 60 case {'HessPattern'}
61 % matrix or default string
62 [validvalue, errmsg, errid] = matrixType(field,value,'sparse(ones(numberofvariables))');
0.01 1720 63 case {'TypicalX'}
64 % matrix or default string
65 [validvalue, errmsg, errid] = matrixType(field,value,'ones(numberofvariables,1)');
66 % If an array is given, check for zero values and warn
67 if validvalue && isa(value,'double') && any(value(:) == 0)
68 warning('optimlib:optimoptioncheckfield:zeroInTypicalX', ...
69 'Zero-valued elements in OPTIONS parameter TypicalX may cause invalid results during the optimization. Set OPTIONS parameter TypicalX with all non-zero elements. This warning will turn into an error in a future release.');
70 end
1720 71 case {'HessMult','JacobMult','Preconditioner','HessFcn'}
72 % function
73 [validvalue, errmsg, errid] = functionType(field,value);
1720 74 case {'HessUpdate'}
75 % dfp, bfgs, steepdesc
76 [validvalue, errmsg, errid] = stringsType(field,value,{'dfp' ; 'steepdesc';'bfgs'});
1720 77 case {'NonlEqnAlgorithm'}
78 % dogleg, lm, gn
79 [validvalue, errmsg, errid] = stringsType(field,value,{'dogleg' ; 'lm'; 'gn'});
1720 80 case {'LineSearchType'}
81 % cubicpoly, quadcubic
82 [validvalue, errmsg, errid] = stringsType(field,value,{'cubicpoly' ; 'quadcubic' });
1720 83 case {'MeritFunction'}
84 % singleobj, multiobj
85 [validvalue, errmsg, errid] = stringsType(field,value,{'singleobj'; 'multiobj' });
1720 86 case {'InitialHessType'}
87 % identity, scaled-identity, user-supplied
88 [validvalue, errmsg, errid] = stringsType(field,value,{'identity' ; 'scaled-identity'; 'user-supplied'});
1720 89 case {'UseParallel'}
90 % 'always' or 'never'
91 [validvalue, errmsg, errid] = stringsType(field,value,{'always' ; 'never'});
1720 92 case {'Algorithm'}
93 % active-set, trust-region-reflective, interior-point, interior-point-convex,
94 % levenberg-marquardt, trust-region-dogleg, lm-line-search(undocumented)
0.01 1720 95 if ~iscell(value)
0.10 1720 96 [validvalue, errmsg, errid] = ...
97 stringsType(field,value,{'active-set' ; 'trust-region-reflective'; ...
98 'interior-point'; 'interior-point-convex'; 'levenberg-marquardt'; ...
99 'trust-region-dogleg'; 'lm-line-search'; 'sqp'});
100 else
101 % Must be {'levenberg-marquardt',positive real}
102 [validvalue, errmsg, errid] = stringPosRealCellType(field,value, ...
103 {'levenberg-marquardt'});
104 end
105 case {'AlwaysHonorConstraints'}
106 % none, bounds
107 [validvalue, errmsg, errid] = ...
108 stringsType(field,value,{'none' ; 'bounds'});
109 case {'ScaleProblem'}
110 % none, obj-and-constr, jacobian
111 [validvalue, errmsg, errid] = ...
112 stringsType(field,value,{'none' ; 'obj-and-constr' ; 'jacobian'});
113 case {'FinDiffType'}
114 % forward, central
115 [validvalue, errmsg, errid] = stringsType(field,value,{'forward' ; 'central'});
116 case {'Hessian'}
117 if ~iscell(value)
118 % If character string, has to be user-supplied, bfgs, lbfgs,
119 % fin-diff-grads, on, off
120 [validvalue, errmsg, errid] = ...
121 stringsType(field,value,{'user-supplied' ; 'bfgs'; 'lbfgs'; 'fin-diff-grads'; ...
122 'on' ; 'off'});
123 else
124 % If cell-array, has to be {'lbfgs',positive integer}
125 [validvalue, errmsg, errid] = stringPosIntegerCellType(field,value,'lbfgs');
126 end
127 case {'SubproblemAlgorithm'}
128 if ~iscell(value)
129 % If character string, has to be 'ldl-factorization' or 'cg',
130 [validvalue, errmsg, errid] = ...
131 stringsType(field,value,{'ldl-factorization' ; 'cg'});
132 else
133 % Either {'ldl-factorization',positive integer} or {'cg',positive integer}
134 [validvalue, errmsg, errid] = stringPosRealCellType(field,value,{'ldl-factorization' ; 'cg'});
135 end
136 case {'InitialHessMatrix'}
137 % strictly positive matrix
138 [validvalue, errmsg, errid] = posMatrixType(field,value);
139 case {'MaxRLPIter'}
140 % integer including inf or default string
141 [validvalue, errmsg, errid] = nonNegInteger(field,value,'100*numberofvariables');
142 case {'MaxNodes'}
143 % integer including inf or default string
144 [validvalue, errmsg, errid] = nonNegInteger(field,value,'1000*numberofvariables');
145 case {'BranchStrategy'}
146 % mininfeas, maxinfeas
147 [validvalue, errmsg, errid] = stringsType(field,value,{'mininfeas' ; 'maxinfeas'});
148 case {'NodeSearchStrategy'}
149 % df, bn
150 [validvalue, errmsg, errid] = stringsType(field,value,{'df' ; 'bn'});
151 case {'InitTrustRegionRadius'}
152 % sqrt(numberOfVariables), positive real
153 [validvalue, errmsg, errid] = posReal(field,value,'sqrt(numberofvariables)');
154 case {'InitBarrierParam'}
155 % positive real
156 [validvalue, errmsg, errid] = posReal(field,value);
157 otherwise
158 validfield = false;
159 validvalue = false;
160 % No need to set an error. If the field isn't valid for MATLAB or Optim,
161 % will have already errored in optimset. If field is valid for MATLAB,
162 % then the error will be an invalid value for MATLAB.
163 errid = '';
164 errmsg = '';
165 end
Other subfunctions in this file are not included in this listing.