0001 function [status,name,prob,res] = penlabtestfeeder(no,testset)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027 if (nargin<1)
0028 no = 0;
0029 end
0030
0031 if (nargin<2)
0032
0033
0034 testset = { ...
0035 { 'sdpa', 'datafiles/control1.dat-s', 1.778463e+01 }, ...
0036 { 'sdpa', 'datafiles/control2.dat-s', 8.300000e+00 }, ...
0037 { 'sdpa', 'datafiles/theta1.dat-s', 2.300000e+01 }, ...
0038 { 'sdpa', 'datafiles/theta2.dat-s', 3.287917e+01 }, ...
0039 { 'sdpa', 'datafiles/truss1.dat-s', -8.999996e+00 }, ...
0040 { 'sdpa', 'datafiles/arch0.dat-s', 5.66517e-01 }, ...
0041 { 'sdpa', 'datafiles/mcp100.dat-s', 2.261574e+02 }, ...
0042 { 'ampl', 'datafiles/camshape100.nl' }, ...
0043 { 'ampl', 'datafiles/chain100.nl' }, ...
0044 { 'ampl', 'datafiles/cosine.nl' }, ...
0045 { 'ampl', 'datafiles/israel.nl' }, ...
0046 { 'ampl', 'datafiles/polygon25.nl' }, ...
0047 { 'ampl', 'datafiles/seba.nl' }, ...
0048 { 'bmi', 'datafiles/bmi_example.mat' }, ...
0049 { 'bmi', 'datafiles/bmi_f4e.mat' }, ...
0050 { 'bmi', 'datafiles/bmi_interval1_0.mat' }, ...
0051 { 'bmi', 'datafiles/bmi_interval1_1.mat' }, ...
0052 { 'bmi', 'datafiles/bmi_interval2_0.mat' }, ...
0053 { 'bmi', 'datafiles/bmi_interval2_1.mat' }, ...
0054 { 'bmi', 'datafiles/bmi_jia.mat' }, ...
0055 { 'bmi', 'datafiles/bmi_patel5.mat' }, ...
0056 { 'bmi', 'datafiles/bmi_toy2.mat' }, ...
0057 { 'pmi', 'datafiles/pmi_example.mat' }, ...
0058 { 'pmi', 'datafiles/pmi_AC1.mat' }, ...
0059 { 'pmi', 'datafiles/pmi_NN4.mat' }, ...
0060 };
0061
0062
0063
0064 end
0065
0066 ntests = length(testset);
0067 if (no<1 || no>ntests)
0068 status = 1;
0069 name = 'NONEXISTENT';
0070 prob = [];
0071 res = [];
0072 return;
0073 end
0074
0075 test = testset{no};
0076 if (length(test)>=3)
0077 res = test{3};
0078 else
0079 res = [];
0080 end
0081 if (strcmpi(test{1},'sdpa'))
0082 [status,name,prob] = sdpa_feeder(test{2});
0083 elseif (strcmpi(test{1},'bmi'))
0084 [status,name,prob] = bmi_feeder(test{2});
0085 elseif (strcmpi(test{1},'pmi'))
0086 [status,name,prob] = pmi_feeder(test{2});
0087 elseif (strcmpi(test{1},'ampl'))
0088 [status,name,prob] = ampl_feeder(test{2});
0089 else
0090
0091 status = -10;
0092 name = 'unknowntype';
0093 prob = [];
0094 res = [];
0095 return;
0096 end
0097
0098 end
0099
0100 function [status,name,prob] = sdpa_feeder(sdpafile)
0101
0102
0103
0104
0105
0106
0107
0108
0109 if (isempty(sdpafile) || ~ischar(sdpafile))
0110 status = -2;
0111 name = 'EMPTY';
0112 prob = [];
0113 return;
0114 end
0115
0116 [path,name,ext] = fileparts(sdpafile);
0117
0118 try
0119 sdpdata = readsdpa(sdpafile);
0120 catch
0121 status = -1;
0122 prob = [];
0123 return;
0124 end
0125
0126 try
0127 penm = sdp_define(sdpdata);
0128 prob = penlab(penm);
0129 status = 0;
0130 catch
0131 status = -3;
0132 prob = [];
0133 end
0134
0135 end
0136
0137 function [status,name,prob] = bmi_feeder(bmifile)
0138
0139
0140
0141
0142
0143
0144
0145
0146 if (isempty(bmifile) || ~ischar(bmifile))
0147 status = -2;
0148 name = 'EMPTY';
0149 prob = [];
0150 return;
0151 end
0152
0153 [path,name,ext] = fileparts(bmifile);
0154
0155 try
0156
0157 load(bmifile);
0158 catch
0159 status = -1;
0160 prob = [];
0161 return;
0162 end
0163
0164 try
0165 penm = bmi_define(bmidata);
0166 prob = penlab(penm);
0167 status = 0;
0168 catch
0169 status = -3;
0170 prob = [];
0171 end
0172
0173 end
0174
0175 function [status,name,prob] = pmi_feeder(pmifile)
0176
0177
0178
0179
0180
0181
0182
0183
0184 if (isempty(pmifile) || ~ischar(pmifile))
0185 status = -2;
0186 name = 'EMPTY';
0187 prob = [];
0188 return;
0189 end
0190
0191 [path,name,ext] = fileparts(pmifile);
0192
0193 try
0194
0195 load(pmifile);
0196 catch
0197 status = -1;
0198 prob = [];
0199 return;
0200 end
0201
0202 try
0203 penm = pmi_define(pmidata);
0204 prob = penlab(penm);
0205 status = 0;
0206 catch
0207 status = -3;
0208 prob = [];
0209 end
0210
0211 end
0212
0213 function [status,name,prob] = ampl_feeder(amplfile)
0214
0215
0216
0217
0218
0219
0220
0221
0222 if (isempty(amplfile) || ~ischar(amplfile))
0223 status = -2;
0224 name = 'EMPTY';
0225 prob = [];
0226 return;
0227 end
0228
0229 [path,name,ext] = fileparts(amplfile);
0230
0231 try
0232 penm = nlp_define(amplfile);
0233 catch
0234 status = -1;
0235 prob = [];
0236 return;
0237 end
0238
0239 try
0240 prob = penlab(penm);
0241 status = 0;
0242 catch
0243 status = -3;
0244 prob = [];
0245 end
0246
0247 end
0248