0001 function t_opf_default(quiet)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 if nargin < 1
0013 quiet = 0;
0014 end
0015
0016 num_tests = 189;
0017
0018 t_begin(num_tests, quiet);
0019
0020 [PQ, PV, REF, NONE, BUS_I, BUS_TYPE, PD, QD, GS, BS, BUS_AREA, VM, ...
0021 VA, BASE_KV, ZONE, VMAX, VMIN, LAM_P, LAM_Q, MU_VMAX, MU_VMIN] = idx_bus;
0022 [GEN_BUS, PG, QG, QMAX, QMIN, VG, MBASE, GEN_STATUS, PMAX, PMIN, ...
0023 MU_PMAX, MU_PMIN, MU_QMAX, MU_QMIN, PC1, PC2, QC1MIN, QC1MAX, ...
0024 QC2MIN, QC2MAX, RAMP_AGC, RAMP_10, RAMP_30, RAMP_Q, APF] = idx_gen;
0025 [F_BUS, T_BUS, BR_R, BR_X, BR_B, RATE_A, RATE_B, RATE_C, ...
0026 TAP, SHIFT, BR_STATUS, PF, QF, PT, QT, MU_SF, MU_ST, ...
0027 ANGMIN, ANGMAX, MU_ANGMIN, MU_ANGMAX] = idx_brch;
0028 [PW_LINEAR, POLYNOMIAL, MODEL, STARTUP, SHUTDOWN, NCOST, COST] = idx_cost;
0029
0030 casefile = 't_case9_opf';
0031 if quiet
0032 verbose = 0;
0033 else
0034 verbose = 0;
0035 end
0036 if have_fcn('octave')
0037 if have_fcn('octave', 'vnum') >= 4
0038 file_in_path_warn_id = 'Octave:data-file-in-path';
0039 else
0040 file_in_path_warn_id = 'Octave:load-file-in-path';
0041 end
0042 s1 = warning('query', file_in_path_warn_id);
0043 warning('off', file_in_path_warn_id);
0044 end
0045
0046 t0 = 'DEFAULT : ';
0047 mpopt = mpoption('opf.violation', 1e-6, 'mips.gradtol', 1e-8, ...
0048 'mips.comptol', 1e-8, 'mips.costtol', 1e-9);
0049 mpopt = mpoption(mpopt, 'out.all', 0, 'verbose', verbose);
0050 if have_fcn('pdipmopf')
0051 mpopt = mpoption(mpopt, 'pdipm.gradtol', 1e-8, ...
0052 'pdipm.comptol', 1e-8, 'pdipm.costtol', 1e-9);
0053 end
0054
0055
0056 ib_data = [1:BUS_AREA BASE_KV:VMIN];
0057 ib_voltage = [VM VA];
0058 ib_lam = [LAM_P LAM_Q];
0059 ib_mu = [MU_VMAX MU_VMIN];
0060 ig_data = [GEN_BUS QMAX QMIN MBASE:APF];
0061 ig_disp = [PG QG VG];
0062 ig_mu = (MU_PMAX:MU_QMIN);
0063 ibr_data = (1:ANGMAX);
0064 ibr_flow = (PF:QT);
0065 ibr_mu = [MU_SF MU_ST];
0066 ibr_angmu = [MU_ANGMIN MU_ANGMAX];
0067
0068
0069 load soln9_opf;
0070
0071
0072 for s = 0:3
0073 mpopt = mpoption(mpopt, 'opf.start', s);
0074 t = sprintf('%s(start=%d): ', t0, s);
0075 [baseMVA, bus, gen, gencost, branch, f, success, et] = runopf(casefile, mpopt);
0076 t_ok(success, [t 'success']);
0077 t_is(f, f_soln, 3, [t 'f']);
0078 t_is( bus(:,ib_data ), bus_soln(:,ib_data ), 10, [t 'bus data']);
0079 t_is( bus(:,ib_voltage), bus_soln(:,ib_voltage), 3, [t 'bus voltage']);
0080 t_is( bus(:,ib_lam ), bus_soln(:,ib_lam ), 3, [t 'bus lambda']);
0081 t_is( bus(:,ib_mu ), bus_soln(:,ib_mu ), 2, [t 'bus mu']);
0082 t_is( gen(:,ig_data ), gen_soln(:,ig_data ), 10, [t 'gen data']);
0083 t_is( gen(:,ig_disp ), gen_soln(:,ig_disp ), 3, [t 'gen dispatch']);
0084 t_is( gen(:,ig_mu ), gen_soln(:,ig_mu ), 3, [t 'gen mu']);
0085 t_is(branch(:,ibr_data ), branch_soln(:,ibr_data ), 10, [t 'branch data']);
0086 t_is(branch(:,ibr_flow ), branch_soln(:,ibr_flow ), 3, [t 'branch flow']);
0087 t_is(branch(:,ibr_mu ), branch_soln(:,ibr_mu ), 2, [t 'branch mu']);
0088 end
0089 mpopt = mpoption(mpopt, 'opf.start', 0);
0090
0091
0092 t = [t0 '(single-block PWL) : '];
0093 mpc = loadcase(casefile);
0094 mpc.gencost(2, NCOST) = 2;
0095 [r, success] = runopf(mpc, mpopt);
0096 [f, bus, gen, branch] = deal(r.f, r.bus, r.gen, r.branch);
0097 t_ok(success, [t 'success']);
0098 t_is(f, f_soln, 3, [t 'f']);
0099 t_is( bus(:,ib_data ), bus_soln(:,ib_data ), 10, [t 'bus data']);
0100 t_is( bus(:,ib_voltage), bus_soln(:,ib_voltage), 3, [t 'bus voltage']);
0101 t_is( bus(:,ib_lam ), bus_soln(:,ib_lam ), 3, [t 'bus lambda']);
0102 t_is( bus(:,ib_mu ), bus_soln(:,ib_mu ), 2, [t 'bus mu']);
0103 t_is( gen(:,ig_data ), gen_soln(:,ig_data ), 10, [t 'gen data']);
0104 t_is( gen(:,ig_disp ), gen_soln(:,ig_disp ), 3, [t 'gen dispatch']);
0105 t_is( gen(:,ig_mu ), gen_soln(:,ig_mu ), 3, [t 'gen mu']);
0106 t_is(branch(:,ibr_data ), branch_soln(:,ibr_data ), 10, [t 'branch data']);
0107 t_is(branch(:,ibr_flow ), branch_soln(:,ibr_flow ), 3, [t 'branch flow']);
0108 t_is(branch(:,ibr_mu ), branch_soln(:,ibr_mu ), 2, [t 'branch mu']);
0109 xr = [r.var.val.Va;r.var.val.Vm;r.var.val.Pg;r.var.val.Qg;0;r.var.val.y];
0110 t_is(r.x, xr, 8, [t 'raw x returned from OPF']);
0111
0112
0113
0114
0115
0116
0117
0118
0119
0120
0121
0122
0123
0124
0125
0126
0127
0128
0129
0130
0131
0132
0133
0134
0135
0136
0137
0138
0139
0140
0141
0142
0143
0144
0145
0146
0147
0148
0149
0150 mpc = loadcase(casefile);
0151 mpc.gencost = [
0152 2 1500 0 3 0.11 5 0;
0153 2 2000 0 3 0.085 1.2 0;
0154 2 3000 0 3 0.1225 1 0;
0155 ];
0156 [baseMVA, bus_soln, gen_soln, gencost, branch_soln, f_soln, success, et] = runopf(mpc, mpopt);
0157 branch_soln = branch_soln(:,1:MU_ST);
0158
0159 A = sparse(0,0);
0160 l = [];
0161 u = [];
0162 nb = size(mpc.bus, 1);
0163 ng = size(mpc.gen, 1);
0164 thbas = 1; thend = thbas+nb-1;
0165 vbas = thend+1; vend = vbas+nb-1;
0166 pgbas = vend+1; pgend = pgbas+ng-1;
0167 qgbas = pgend+1; qgend = qgbas+ng-1;
0168 nxyz = 2*nb + 2*ng;
0169 N = sparse((1:ng)', (pgbas:pgend)', mpc.baseMVA * ones(ng,1), ng, nxyz);
0170 fparm = [ 1 0 0 1;
0171 1 -100 100 1;
0172 1 -10 10 1 ];
0173 H = 2 * spdiags(mpc.gencost(:, 5), 0, ng, ng);
0174 Cw = mpc.gencost(:, 6);
0175 mpc.gencost(:, 5:7) = 0;
0176
0177
0178 t = [t0 'w/quadratic generalized gen cost : '];
0179 [r, success] = opf(mpc, A, l, u, mpopt, N, fparm, H, Cw);
0180 [f, bus, gen, branch] = deal(r.f, r.bus, r.gen, r.branch);
0181 t_ok(success, [t 'success']);
0182 t_is(f, f_soln, 3, [t 'f']);
0183 t_is( bus(:,ib_data ), bus_soln(:,ib_data ), 10, [t 'bus data']);
0184 t_is( bus(:,ib_voltage), bus_soln(:,ib_voltage), 3, [t 'bus voltage']);
0185 t_is( bus(:,ib_lam ), bus_soln(:,ib_lam ), 3, [t 'bus lambda']);
0186 t_is( bus(:,ib_mu ), bus_soln(:,ib_mu ), 2, [t 'bus mu']);
0187 t_is( gen(:,ig_data ), gen_soln(:,ig_data ), 10, [t 'gen data']);
0188 t_is( gen(:,ig_disp ), gen_soln(:,ig_disp ), 3, [t 'gen dispatch']);
0189 t_is( gen(:,ig_mu ), gen_soln(:,ig_mu ), 3, [t 'gen mu']);
0190 t_is(branch(:,ibr_data ), branch_soln(:,ibr_data ), 10, [t 'branch data']);
0191 t_is(branch(:,ibr_flow ), branch_soln(:,ibr_flow ), 3, [t 'branch flow']);
0192 t_is(branch(:,ibr_mu ), branch_soln(:,ibr_mu ), 2, [t 'branch mu']);
0193 t_is(r.cost.usr, f, 12, [t 'user cost']);
0194
0195
0196 load soln9_opf;
0197 mpc = loadcase(casefile);
0198 mpc.N = sparse((1:nb)', (vbas:vend)', ones(nb,1), nb, nxyz);
0199 mpc.fparm = ones(nb,1) * [ 2 1.08 0.02 1e8 ];
0200 mpc.Cw = ones(nb, 1);
0201 t = [t0 'w/legacy cost, in deadzone : '];
0202 r = runopf(mpc, mpopt);
0203 [f, bus, gen, branch] = deal(r.f, r.bus, r.gen, r.branch);
0204 t_ok(r.success, [t 'success']);
0205 t_is(f, f_soln, 3, [t 'f']);
0206 t_is( bus(:,ib_data ), bus_soln(:,ib_data ), 10, [t 'bus data']);
0207 t_is( bus(:,ib_voltage), bus_soln(:,ib_voltage), 3, [t 'bus voltage']);
0208 t_is( bus(:,ib_lam ), bus_soln(:,ib_lam ), 3, [t 'bus lambda']);
0209 t_is( bus(:,ib_mu ), bus_soln(:,ib_mu ), 2, [t 'bus mu']);
0210 t_is( gen(:,ig_data ), gen_soln(:,ig_data ), 10, [t 'gen data']);
0211 t_is( gen(:,ig_disp ), gen_soln(:,ig_disp ), 3, [t 'gen dispatch']);
0212 t_is( gen(:,ig_mu ), gen_soln(:,ig_mu ), 3, [t 'gen mu']);
0213 t_is(branch(:,ibr_data ), branch_soln(:,ibr_data ), 10, [t 'branch data']);
0214 t_is(branch(:,ibr_flow ), branch_soln(:,ibr_flow ), 3, [t 'branch flow']);
0215 t_is(branch(:,ibr_mu ), branch_soln(:,ibr_mu ), 2, [t 'branch mu']);
0216 t_is(r.cost.usr, 0, 12, [t 'user cost']);
0217
0218 t = [t0 'w/legacy cost, not in deadzone : '];
0219 mpc.fparm = ones(nb,1) * [ 2 1.08 0.01 1e8 ];
0220 r = runopf(mpc, mpopt);
0221 [f, bus, gen, branch] = deal(r.f, r.bus, r.gen, r.branch);
0222 t_ok(r.success, [t 'success']);
0223 t_is(f, 9009.0890, 3, [t 'f']);
0224 t_is([min(bus(:, VM)) mean(bus(:, VM)) max(bus(:, VM))], ...
0225 [1.066624, 1.083980, 1.091698], 5, [t 'bus voltage']);
0226 t_is(r.cost.usr, 1673.065465, 5, [t 'user cost']);
0227
0228
0229
0230
0231
0232 load soln9_opf_extras1;
0233 A = sparse([1;1;2;2],[10;25;10;25],[-1;1;1;1],2,25);
0234 u = [Inf; Inf];
0235 l = [-1; 1];
0236
0237 N = sparse(1, 25, 1, 1, 25);
0238 fparm = [1 0 0 1];
0239 H = sparse(1,1);
0240 Cw = 100;
0241
0242 t = [t0 'w/extra constraints & costs 1 : '];
0243 [r, success] = opf(casefile, A, l, u, mpopt, N, fparm, H, Cw);
0244 [f, bus, gen, branch] = deal(r.f, r.bus, r.gen, r.branch);
0245 t_ok(success, [t 'success']);
0246 t_is(f, f_soln, 3, [t 'f']);
0247 t_is( bus(:,ib_data ), bus_soln(:,ib_data ), 10, [t 'bus data']);
0248 t_is( bus(:,ib_voltage), bus_soln(:,ib_voltage), 3, [t 'bus voltage']);
0249 t_is( bus(:,ib_lam ), bus_soln(:,ib_lam ), 3, [t 'bus lambda']);
0250 t_is( bus(:,ib_mu ), bus_soln(:,ib_mu ), 2, [t 'bus mu']);
0251 t_is( gen(:,ig_data ), gen_soln(:,ig_data ), 10, [t 'gen data']);
0252 t_is( gen(:,ig_disp ), gen_soln(:,ig_disp ), 3, [t 'gen dispatch']);
0253 t_is( gen(:,ig_mu ), gen_soln(:,ig_mu ), 3, [t 'gen mu']);
0254 t_is(branch(:,ibr_data ), branch_soln(:,ibr_data ), 10, [t 'branch data']);
0255 t_is(branch(:,ibr_flow ), branch_soln(:,ibr_flow ), 3, [t 'branch flow']);
0256 t_is(branch(:,ibr_mu ), branch_soln(:,ibr_mu ), 2, [t 'branch mu']);
0257 t_is(r.var.val.z, 0.025419, 6, [t 'user variable']);
0258 t_is(r.cost.usr, 2.5419, 4, [t 'user cost']);
0259
0260
0261 mpc = loadcase('t_case9_opfv2');
0262
0263 mpc.branch(1, ANGMAX) = 360;
0264 mpc.branch(9, ANGMIN) = -360;
0265
0266
0267 load soln9_opf_PQcap;
0268
0269
0270 t = [t0 'w/capability curves : '];
0271 [baseMVA, bus, gen, gencost, branch, f, success, et] = runopf(mpc, mpopt);
0272 t_ok(success, [t 'success']);
0273 t_is(f, f_soln, 3, [t 'f']);
0274 t_is( bus(:,ib_data ), bus_soln(:,ib_data ), 10, [t 'bus data']);
0275 t_is( bus(:,ib_voltage), bus_soln(:,ib_voltage), 3, [t 'bus voltage']);
0276 t_is( bus(:,ib_lam ), bus_soln(:,ib_lam ), 3, [t 'bus lambda']);
0277 t_is( bus(:,ib_mu ), bus_soln(:,ib_mu ), 2, [t 'bus mu']);
0278 t_is( gen(:,ig_data ), gen_soln(:,ig_data ), 10, [t 'gen data']);
0279 t_is( gen(:,ig_disp ), gen_soln(:,ig_disp ), 3, [t 'gen dispatch']);
0280 t_is( gen(:,ig_mu ), gen_soln(:,ig_mu ), 3, [t 'gen mu']);
0281 t_is(branch(:,ibr_data ), branch_soln(:,ibr_data ), 10, [t 'branch data']);
0282 t_is(branch(:,ibr_flow ), branch_soln(:,ibr_flow ), 3, [t 'branch flow']);
0283 t_is(branch(:,ibr_mu ), branch_soln(:,ibr_mu ), 2, [t 'branch mu']);
0284
0285
0286 mpc = loadcase('t_case9_opfv2');
0287
0288 mpc.gen(2:3, [PC1, PC2, QC1MIN, QC1MAX, QC2MIN, QC2MAX]) = zeros(2,6);
0289
0290
0291 load soln9_opf_ang;
0292
0293
0294 t = [t0 'w/angle difference limits : '];
0295 [baseMVA, bus, gen, gencost, branch, f, success, et] = runopf(mpc, mpopt);
0296 t_ok(success, [t 'success']);
0297 t_is(f, f_soln, 3, [t 'f']);
0298 t_is( bus(:,ib_data ), bus_soln(:,ib_data ), 10, [t 'bus data']);
0299 t_is( bus(:,ib_voltage), bus_soln(:,ib_voltage), 3, [t 'bus voltage']);
0300 t_is( bus(:,ib_lam ), bus_soln(:,ib_lam ), 3, [t 'bus lambda']);
0301 t_is( bus(:,ib_mu ), bus_soln(:,ib_mu ), 1, [t 'bus mu']);
0302 t_is( gen(:,ig_data ), gen_soln(:,ig_data ), 10, [t 'gen data']);
0303 t_is( gen(:,ig_disp ), gen_soln(:,ig_disp ), 3, [t 'gen dispatch']);
0304 t_is( gen(:,ig_mu ), gen_soln(:,ig_mu ), 3, [t 'gen mu']);
0305 t_is(branch(:,ibr_data ), branch_soln(:,ibr_data ), 10, [t 'branch data']);
0306 t_is(branch(:,ibr_flow ), branch_soln(:,ibr_flow ), 3, [t 'branch flow']);
0307 t_is(branch(:,ibr_mu ), branch_soln(:,ibr_mu ), 2, [t 'branch mu']);
0308 t_is(branch(:,ibr_angmu ), branch_soln(:,ibr_angmu ), 2, [t 'branch angle mu']);
0309
0310
0311
0312 load soln9_opf;
0313
0314
0315 t = [t0 'w/ignored angle difference limits : '];
0316 mpopt1 = mpoption(mpopt, 'opf.ignore_angle_lim', 1);
0317 [baseMVA, bus, gen, gencost, branch, f, success, et] = runopf(mpc, mpopt1);
0318
0319 branch(1, ANGMAX) = 360;
0320 branch(9, ANGMIN) = -360;
0321 t_ok(success, [t 'success']);
0322 t_is(f, f_soln, 3, [t 'f']);
0323 t_is( bus(:,ib_data ), bus_soln(:,ib_data ), 10, [t 'bus data']);
0324 t_is( bus(:,ib_voltage), bus_soln(:,ib_voltage), 3, [t 'bus voltage']);
0325 t_is( bus(:,ib_lam ), bus_soln(:,ib_lam ), 3, [t 'bus lambda']);
0326 t_is( bus(:,ib_mu ), bus_soln(:,ib_mu ), 2, [t 'bus mu']);
0327 t_is( gen(:,ig_data ), gen_soln(:,ig_data ), 10, [t 'gen data']);
0328 t_is( gen(:,ig_disp ), gen_soln(:,ig_disp ), 3, [t 'gen dispatch']);
0329 t_is( gen(:,ig_mu ), gen_soln(:,ig_mu ), 3, [t 'gen mu']);
0330 t_is(branch(:,ibr_data ), branch_soln(:,ibr_data ), 10, [t 'branch data']);
0331 t_is(branch(:,ibr_flow ), branch_soln(:,ibr_flow ), 3, [t 'branch flow']);
0332 t_is(branch(:,ibr_mu ), branch_soln(:,ibr_mu ), 2, [t 'branch mu']);
0333
0334
0335
0336 t = [t0 'w/angle difference limit = 0 : '];
0337 mpc = loadcase(casefile);
0338 b = 5;
0339 mpc.branch(b, ANGMAX) = 0;
0340 r = runopf(mpc, mpopt);
0341 t_ok(success, [t 'success']);
0342 diff = r.bus(r.branch(b, F_BUS), VA) - r.bus(r.branch(b, T_BUS), VA);
0343 t_is(diff, 0, 5, [t 'angle diff']);
0344
0345
0346 t = [t0 'ref bus ~= 1, ref ang ~= 0 : '];
0347 mpc = loadcase(casefile);
0348 mpc.bus([1;3], BUS_TYPE) = [PV; REF];
0349 bus_soln([1;3], BUS_TYPE) = bus_soln([3;1], BUS_TYPE);
0350 mpc.bus(3, VA) = 3.3014277;
0351 r = runopf(mpc, mpopt);
0352 [success, f, bus, gen, branch] = deal(r.success, r.f, r.bus, r.gen, r.branch);
0353 t_ok(success, [t 'success']);
0354 t_is(f, f_soln, 3, [t 'f']);
0355 t_is( bus(:,ib_data ), bus_soln(:,ib_data ), 10, [t 'bus data']);
0356 t_is( bus(:,ib_voltage), bus_soln(:,ib_voltage), 3, [t 'bus voltage']);
0357 t_is( bus(:,ib_lam ), bus_soln(:,ib_lam ), 3, [t 'bus lambda']);
0358 t_is( bus(:,ib_mu ), bus_soln(:,ib_mu ), 2, [t 'bus mu']);
0359 t_is( gen(:,ig_data ), gen_soln(:,ig_data ), 10, [t 'gen data']);
0360 t_is( gen(:,ig_disp ), gen_soln(:,ig_disp ), 3, [t 'gen dispatch']);
0361 t_is( gen(:,ig_mu ), gen_soln(:,ig_mu ), 3, [t 'gen mu']);
0362 t_is(branch(:,ibr_data ), branch_soln(:,ibr_data ), 10, [t 'branch data']);
0363 t_is(branch(:,ibr_flow ), branch_soln(:,ibr_flow ), 3, [t 'branch flow']);
0364 t_is(branch(:,ibr_mu ), branch_soln(:,ibr_mu ), 2, [t 'branch mu']);
0365
0366
0367
0368 load soln9_opf_vg;
0369
0370
0371
0372 t = [t0 'w/opf.use_vg = 1 : '];
0373 mpc = loadcase(casefile);
0374 mpc.gen = mpc.gen([1 2 1 3], :);
0375 mpc.gencost = mpc.gencost([1 2 1 3], :);
0376 mpc.gen([1 3], [PMAX PMIN]) = mpc.gen([1 3], [PMAX PMIN]) / 2;
0377 mpc.gen(3, [QMIN, QMAX]) = 0;
0378 mpc.gencost([1 3], COST:end) = mpc.gencost([1 3], COST:end) / 2;
0379 mpc.gen(1, VG) = 1.05;
0380 mpc.gen(3, VG) = 1.06;
0381 mpopt1 = mpoption(mpopt, 'opf.use_vg', 1);
0382 r = runopf(mpc, mpopt1);
0383 t_ok(r.success, [t 'success']);
0384 t_is(r.f, f_soln, 3, [t 'f']);
0385 t_is( r.bus(:,ib_data ), bus_soln(:,ib_data ), 10, [t 'bus data']);
0386 t_is( r.bus(:,ib_voltage), bus_soln(:,ib_voltage), 3, [t 'bus voltage']);
0387 t_is( r.bus(:,ib_lam ), bus_soln(:,ib_lam ), 3, [t 'bus lambda']);
0388 t_is( r.bus(:,ib_mu ), bus_soln(:,ib_mu ), 2, [t 'bus mu']);
0389 t_is( r.gen(:,ig_data ), gen_soln(:,ig_data ), 10, [t 'gen data']);
0390 t_is( r.gen(:,ig_disp ), gen_soln(:,ig_disp ), 3, [t 'gen dispatch']);
0391 t_is( r.gen(:,ig_mu ), gen_soln(:,ig_mu ), 3, [t 'gen mu']);
0392 t_is(r.branch(:,ibr_data ), branch_soln(:,ibr_data ), 10, [t 'branch data']);
0393 t_is(r.branch(:,ibr_flow ), branch_soln(:,ibr_flow ), 3, [t 'branch flow']);
0394 t_is(r.branch(:,ibr_mu ), branch_soln(:,ibr_mu ), 2, [t 'branch mu']);
0395
0396
0397 t = [t0 'w/opf.use_vg = 0.9 : '];
0398 mpopt1 = mpoption(mpopt, 'opf.use_vg', 0.9);
0399 r = runopf(mpc, mpopt1);
0400 t_ok(r.success, [t 'success']);
0401 t_is(r.f, f_soln1, 3, [t 'f']);
0402 t_is( r.bus(:,ib_data ), bus_soln1(:,ib_data ), 10, [t 'bus data']);
0403 t_is( r.bus(:,ib_voltage), bus_soln1(:,ib_voltage), 3, [t 'bus voltage']);
0404 t_is( r.bus(:,ib_lam ), bus_soln1(:,ib_lam ), 3, [t 'bus lambda']);
0405 t_is( r.bus(:,ib_mu ), bus_soln1(:,ib_mu ), 2, [t 'bus mu']);
0406 t_is( r.gen(:,ig_data ), gen_soln1(:,ig_data ), 10, [t 'gen data']);
0407 t_is( r.gen(:,ig_disp ), gen_soln1(:,ig_disp ), 3, [t 'gen dispatch']);
0408 t_is( r.gen(:,ig_mu ), gen_soln1(:,ig_mu ), 3, [t 'gen mu']);
0409 t_is(r.branch(:,ibr_data ), branch_soln1(:,ibr_data ), 10, [t 'branch data']);
0410 t_is(r.branch(:,ibr_flow ), branch_soln1(:,ibr_flow ), 3, [t 'branch flow']);
0411 t_is(r.branch(:,ibr_mu ), branch_soln1(:,ibr_mu ), 2, [t 'branch mu']);
0412
0413 t = [t0 'hi-deg polynomial costs : '];
0414 mpc = loadcase(casefile);
0415 mpc.gencost = [
0416 2 1500 0 6 1e-6/5 0 0 0 0 0;
0417 2 3000 0 5 1e-4/4 0 0 0 0 0;
0418 2 2000 0 3 1/2 0 0 0 0 0;
0419 ];
0420 r = runopf(mpc, mpopt);
0421 [f, bus, gen, branch] = deal(r.f, r.bus, r.gen, r.branch);
0422 t_ok(r.success, [t 'success']);
0423 t_is(f, 11899.4652, 4, [t 'f']);
0424 t_is(gen(:, PG), [100.703628; 88.719864; 128.679485], 5, [t 'Pg']);
0425 t_is([min(bus(:, VM)) mean(bus(:, VM)) max(bus(:, VM))], ...
0426 [1.059191 1.079404 1.1], 5, [t 'bus voltage']);
0427
0428
0429
0430
0431
0432
0433
0434
0435
0436
0437
0438
0439
0440 t = [t0 'all buses isolated : '];
0441 mpc.bus(:, BUS_TYPE) = NONE;
0442 try
0443 r = runopf(mpc, mpopt);
0444 t_is(r.success, 0, 12, [t 'success = 0']);
0445 catch
0446 t_ok(0, [t 'unexpected fatal error']);
0447 end
0448
0449
0450 t = [t0 'w/no branch limits : '];
0451 mpc = loadcase(casefile);
0452 mpc.branch(:, RATE_A) = 0;
0453 r = runopf(mpc, mpopt);
0454 t_ok(r.success, [t 'success']);
0455 t_is(r.f, 5496.128635, 4, [t 'f']);
0456 t_is(r.gen(:, PG), [90; 220.463932; 10], 5, [t 'Pg']);
0457 t_is([min(r.bus(:, VM)) mean(r.bus(:, VM)) max(r.bus(:, VM))], ...
0458 [1.070692 1.090449 1.1], 5, [t 'bus voltage']);
0459
0460 if have_fcn('octave')
0461 warning(s1.state, file_in_path_warn_id);
0462 end
0463
0464 t_end;