0001
0002
0003
0004
0005
0006 function DSA_BD_demo(maxiter,tol)
0007 if nargin < 1; maxiter = 3000; end;
0008 if nargin < 2; tol = 1e-6; end
0009 randn('state',0);
0010 rand('twister',0);
0011
0012
0013
0014
0015
0016
0017 pause(1);
0018
0019 maxprobs = 2;
0020 OPTIONS.vers = 1;
0021 if ~isempty(maxiter); OPTIONS.maxit = maxiter; end
0022 if nargin>=1 && ~isempty(tol); OPTIONS.tol = tol; end
0023
0024
0025
0026
0027
0028 blk =[];
0029 for prob = 1:maxprobs;
0030 if (prob == 1)
0031 file = 'fap09';
0032 disp(['**** From FAP file : ',file, '****'])
0033 [blk,At,C,b] = fapread(file);
0034 X0 = cell(size(C));
0035 Z0 = cell(size(C));
0036 OPTIONS.n = 0;
0037 for p = 1:length(C)
0038 X0{p} = zeros(size(C{p}));
0039 Z0{p} = zeros(size(C{p}));
0040 OPTIONS.n(p) = size(C{p},1);
0041 end;
0042 OPTIONS.m = length(b);
0043
0044
0045
0046 elseif (prob == 2)
0047 file = 'gka2c.sparse';
0048 disp(['**** From BIQ file : ',file, '****'])
0049 [Q] = biqread(file);
0050 [blk2,At2,C2,b2] = biq(Q);
0051 [blk,At,C,b] = addpositive(blk2,At2,C2,b2);
0052 X0 = cell(size(C));
0053 Z0 = cell(size(C));
0054 OPTIONS.n = 0;
0055 for p = 1:length(C)
0056 X0{p} = zeros(size(C{p}));
0057 Z0{p} = zeros(size(C{p}));
0058 OPTIONS.n(p) =size(C{p},1);
0059 end;
0060 OPTIONS.m = length(b);
0061
0062 elseif (prob == 3)
0063 file = 'chr18b.dat';
0064 disp(['**** From QAP file : ',file, '****'])
0065 [A,B] = qapread(file);
0066 [blk2,At2,C2,b2] = qapAW(A,B);
0067 [blk,At,C,b] = addpositive(blk2,At2,C2,b2);
0068 X0 = cell(size(C));
0069 Z0 = cell(size(C));
0070 OPTIONS.n = 0;
0071 for p = 1:length(C)
0072 X0{p} = zeros(size(C{p}));
0073 Z0{p} = zeros(size(C{p}));
0074 OPTIONS.n(p) =size(C{p},1);
0075 end;
0076 OPTIONS.m = length(b);
0077
0078 elseif (prob == 4)
0079 disp('******** sparse random sdp **********')
0080 OPTIONS.n = 300; OPTIONS.m = 20000;
0081 OPTIONS.p=3;
0082 rand_seed = 3002030;
0083 [At, b, C, X0, y0, Z0] = rand_sdps(OPTIONS.n, OPTIONS.m, OPTIONS.p, rand_seed);
0084 n = size(C,1);
0085 par.n = n;
0086 [blk,At,C,b] = Boundary2SDPT3(n,At,b,C);
0087 y = y0;
0088 if iscell(Z0); Z = Z0; else Z = {Z0}; end;
0089 if iscell(X0); X = X0; else X = {X0}; end;
0090
0091 elseif (prob == 5)
0092 disp('******** dense random sdp **********')
0093 OPTIONS.n = 50; OPTIONS.m = 500;
0094 [blk,At,C,b,X0,y0,Z0] = randsdp(OPTIONS.n,OPTIONS.m);
0095
0096 end
0097
0098
0099
0100 y0 = zeros(size(b));
0101
0102
0103 legends = [];
0104 h = [];
0105 for alg = 1 : 1
0106 clear obj X y Z runhist;
0107 if alg == 1
0108 OPTIONS.sigma = 0.99;
0109 OPTIONS.normalize = 3;
0110 OPTIONS.adaptivelambda = 1;
0111 OPTIONS.dynamicscaling = 1;
0112 OPTIONS.scaleratio = 1.5;
0113 OPTIONS.scalecorrection = .9;
0114 OPTIONS.scalerelnorm = 1;
0115 OPTIONS.dyn_scale_updateiteration = 5;
0116 OPTIONS.balancedinit = 3;
0117
0118 [obj,X,y,Z,runhist] = ...
0119 DSA_BD_SDP_Solver(blk,At,C,b,OPTIONS,X0,y0,Z0);
0120
0121 elseif alg == 2
0122 OPTIONS.sigma = 0.99;
0123 OPTIONS.normalize = 3;
0124 OPTIONS.adaptivelambda = 0;
0125 OPTIONS.dynamicscaling = 1;
0126 OPTIONS.scaleratio = 1.5;
0127 OPTIONS.scalecorrection = .75;
0128 OPTIONS.scalerelnorm = 1;
0129 OPTIONS.dyn_scale_updateiteration = 5;
0130 OPTIONS.balancedinit = 3;
0131
0132 [obj,X,y,Z,runhist] = ...
0133 DSA_BD_SDP_Solver(blk,At,C,b,OPTIONS,X0,y0,Z0);
0134 end
0135 [h,legends] = DSA_BD_PlotRunHistory(h,legends,runhist, OPTIONS);
0136 end
0137 fprintf('\n**** press enter to continue ****\n'); pause
0138
0139 end