Home > solver > DSA_BD_demo.m

DSA_BD_demo

PURPOSE ^

Demo: Examples of SDPs solved by DSA_BD

SYNOPSIS ^

function DSA_BD_demo(maxiter,tol)

DESCRIPTION ^

Demo: Examples of SDPs solved by DSA_BD
%
% C. Ortiz
% Las Modified: 3/31/2011
%*****************************************************************

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 %Demo: Examples of SDPs solved by DSA_BD
0002 %%
0003 %% C. Ortiz
0004 %% Las Modified: 3/31/2011
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 %    feas = input('using feasible starting point? [yes = 1, no = 0] ');
0012 %    if (feas)
0013 %       fprintf('\n  using feasible starting point\n\n');
0014 %    else
0015 %       fprintf('\n  using infeasible starting point\n\n');
0016 %    end
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 %iterm = zeros(2,6); infom = zeros(2,6); timem = zeros(2,6);
0025 
0026 %sqlparameters;
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

Generated on Mon 19-Sep-2011 21:41:33 by m2html © 2005