pdscoset.m
来自「% Atomizer Main Directory, Version .802 」· M 代码 · 共 196 行
M
196 行
function options = pdscoSet(varargin)%pdscoSet creates or alters an options structure for pdsco.m.%% options = pdscoSet('PARAM1',VALUE1,'PARAM2',VALUE2,...);% creates a structure with the specified named parameters and values.% Any unspecified parameters are set to [].% It is sufficient to type only the leading characters that uniquely% identify the parameter. Case is ignored for parameter names.%% NOTE: For values that are strings, correct case and the complete string% are required; if an invalid string is provided, the default is used.%% options = pdscoSet(oldopts,'PARAM1',VALUE1,...);% creates a copy of oldopts with the named parameters reset to the% specified values.%% options = pdscoSet(oldopts,newopts);% combines an existing structure oldopts with a new structure newopts.% Any parameters in newopts with non-empty values overwrite the% corresponding old parameters in oldopts.%% pdscoSet with no input arguments and no output arguments displays all% parameter names and their possible values.%% options = pdscoSet (with no input arguments) creates a structure% where all the fields are set to their default values.%% options.gamma may be zero or positive. A typical value is % gamma = 1.0e-4.% options.delta must be positive. Again, a typical value is % delta = 1.0e-4.% Values smaller than 1.0e-6 or 1.0e-7 may affect% numerical reliability. Increasing delta usually% improves convergence.% For least-squares applications, delta = 1.0 is % appropriate.% options.MaxIter is the maximum iterations of the primal-dual % barrier method.% options.FeaTol is the accuracy for satisfying Ax + r = b and % A'y + z = g.% options.OptTol is the accuracy for satisfying x.*z = 0.% options.StepTol is how close each step in x and z may be to % reaching a bound.% options.x0min Minimum size of x0 relative to max(x0).% options.z0min Minimum size of z0 relative to max(z0).% options.mu0 Scales initial mu.% options.LSmethod 1=Cholesky 2=QR 3=LSQR or SYMMLQ% options.LSproblem LS problem for each search direction.% options.LSQRMaxIter * min(m,n) is the maximum LSQR (cg) iterations.% options.LSQRatol1 is the starting value of the LSQR accuracy % tolerance "atol".% options.LSQRatol2 is the smallest value atol is reduced to.% options.LSQRconlim shuts LSQR down early if its matrix is ill-conditioned.% options.wait = 0 means solve the problem with default internal parameters;% = 1 means pause to allow interactive resetting of parameters.% pdscoSet.m is derived from optimset.m (Revision 1.14, 1998/08/17)% in the Optimization Toolbox of The MathWorks, Inc.%% 28 Sep 2000: First version of pdscoSet.m.% Michael Saunders, SOL, Stanford University.if (nargin == 0) % Set default options. defoptions.gamma = 1e-4; defoptions.delta = 1e-4; defoptions.MaxIter = 30; defoptions.FeaTol = 1e-6; defoptions.OptTol = 1e-6; defoptions.StepTol = 0.99; defoptions.x0min = 1.0; % 1.0 for cold starts? defoptions.z0min = 1.0; % 0.1 for warm starts? defoptions.mu0 = 1.0; defoptions.LSmethod = 3; defoptions.LSproblem = 1; defoptions.LSQRMaxIter = 10.0; defoptions.LSQRatol1 = 1e-04; defoptions.LSQRatol2 = 1e-15; % Not used defoptions.LSQRconlim = 1e+12; % Somewhere between e+8 and e+16 defoptions.wait = 0; defoptions.NOTE = 'LSQRMaxIter is scaled by the matrix dimension'; if (nargout == 0) % Display options. disp('pdsco default options:') disp( defoptions ) else options = defoptions; end return;endNames = ...[ 'gamma ' 'delta ' 'MaxIter ' 'FeaTol ' 'OptTol ' 'StepTol ' 'x0min ' 'z0min ' 'mu0 ' 'LSmethod ' 'LSproblem ' 'LSQRMaxIter' 'LSQRatol1 ' 'LSQRatol2 ' 'LSQRconlim ' 'wait ' 'NOTE '];m = size (Names,1);names = lower(Names);% The remaining clever stuff is from optimset.m.% Combine all leading options structures o1, o2, ... in pdscoSet(o1,o2,...).options = [];for j = 1:m eval(['options.' Names(j,:) '= [];']);endi = 1;while i <= nargin arg = varargin{i}; if isstr(arg) % arg is an option name break; end if ~isempty(arg) % [] is a valid options argument if ~isa(arg,'struct') error(sprintf(['Expected argument %d to be a ' ... 'string parameter name ' ... 'or an options structure\ncreated with pdscoSet.'], i)); end for j = 1:m if any(strcmp(fieldnames(arg),deblank(Names(j,:)))) eval(['val = arg.' Names(j,:) ';']); else val = []; end if ~isempty(val) eval(['options.' Names(j,:) '= val;']); end end end i = i + 1;end% A finite state machine to parse name-value pairs.if rem(nargin-i+1,2) ~= 0 error('Arguments must occur in name-value pairs.');endexpectval = 0; % start expecting a name, not a valuewhile i <= nargin arg = varargin{i}; if ~expectval if ~isstr(arg) error(sprintf(['Expected argument %d to be a ' ... 'string parameter name.'], i)); end lowArg = lower(arg); j = strmatch(lowArg,names); if isempty(j) % if no matches error(sprintf('Unrecognized parameter name ''%s''.', arg)); elseif length(j) > 1 % if more than one match % Check for any exact matches % (in case any names are subsets of others) k = strmatch(lowArg,names,'exact'); if length(k) == 1 j = k; else msg = sprintf('Ambiguous parameter name ''%s'' ', arg); msg = [msg '(' deblank(Names(j(1),:))]; for k = j(2:length(j))' msg = [msg ', ' deblank(Names(k,:))]; end msg = sprintf('%s).', msg); error(msg); end end else eval(['options.' Names(j,:) '= arg;']); end expectval = ~expectval; i = i + 1;endif expectval error(sprintf('Expected value for parameter ''%s''.', arg));end
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?