0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 function [obj,X,y,Z,runhist] = DSA_BD_SDP_Solver(blk,At,C,b,OPTIONS,X0,y0,Z0)
0023
0024
0025
0026
0027
0028
0029 warning off;
0030
0031 matlabversion = sscanf(version,'%f');
0032
0033 par = DSA_BD_Parameters;
0034 if strcmp(computer,'PCWIN64') | strcmp(computer,'GLNXA64')
0035 par.computer = 64;
0036 else
0037 par.computer = 32;
0038 end
0039 par.matlabversion = matlabversion(1);
0040 par.tstart = clock;
0041 par = DSA_BD_Parameters;
0042
0043
0044 if exist('OPTIONS')
0045 if isfield(OPTIONS,'vers'); par.vers = OPTIONS.vers; end
0046 if isfield(OPTIONS,'maxit'); par.maxit = OPTIONS.maxit; end
0047 if isfield(OPTIONS,'sigma'); par.sigma = OPTIONS.sigma; end
0048 if isfield(OPTIONS,'tol'); par.tol = OPTIONS.tol; end
0049 if isfield(OPTIONS,'normalize'); par.normalize = OPTIONS.normalize; end
0050 if isfield(OPTIONS,'adaptivelambda'); par.adaptivelambda = OPTIONS.adaptivelambda; end
0051 if isfield(OPTIONS,'dynamicscaling'); par.dynamicscaling = OPTIONS.dynamicscaling; end
0052 if isfield(OPTIONS,'scaleratio'); par.scaleratio = OPTIONS.scaleratio; end
0053 if isfield(OPTIONS,'scalecorrection'); par.scalecorrection = OPTIONS.scalecorrection; end
0054 if isfield(OPTIONS,'dyn_scale_updateiteration'); par.dyn_scale_updateiteration = OPTIONS.dyn_scale_updateiteration; end
0055 if isfield(OPTIONS,'adaptiveiteration'); par.adaptiveiteration = OPTIONS.adaptiveiteration; end
0056 if isfield(OPTIONS,'print'); par.print = OPTIONS.print; end
0057 if isfield(OPTIONS,'n'); par.n = OPTIONS.n; end
0058 if isfield(OPTIONS,'m'); par.m = OPTIONS.m; end
0059 if isfield(OPTIONS,'balancedinit'); par.balancedinit = OPTIONS.balancedinit; end
0060 if isfield(OPTIONS,'file'); par.file = OPTIONS.file; end
0061 if isfield(OPTIONS,'tstart'); par.tstart = OPTIONS.tstart; end
0062 if isfield(OPTIONS,'scalerelnorm'); par.scalerelnorm = OPTIONS.scalerelnorm; end
0063 end
0064 if (size(blk,2) > 2); par.smallblkdim = 0; end
0065
0066
0067
0068
0069
0070
0071
0072 if ~iscell(At); At = {At}; end;
0073 if ~iscell(C); C = {C}; end;
0074 if all(size(At) == [size(blk,1), length(b)]);
0075 convertyes = zeros(size(blk,1),1);
0076 for p = 1:size(blk,1)
0077 if strcmp(blk{p,1},'s') && all(size(At{p,1}) == sum(blk{p,2}))
0078 convertyes(p) = 1;
0079 end
0080 end
0081 if any(convertyes)
0082 if (par.printlevel);
0083 fprintf('\n sqlp: converting At into required format');
0084 end
0085 At = svec(blk,At,ones(size(blk,1),1));
0086 end
0087 end
0088
0089
0090
0091
0092
0093
0094 [obj,X,y,Z,runhist] = ...
0095 DSA_BD(blk,At,C,b,par,X0,y0,Z0);
0096 end
0097