0001 function t_modcost(quiet)
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
0028
0029
0030
0031
0032
0033 if nargin < 1
0034 quiet = 0;
0035 end
0036
0037 n_tests = 162;
0038
0039 t_begin(n_tests, quiet);
0040
0041
0042 [GEN_BUS, PG, QG, QMAX, QMIN, VG, MBASE, GEN_STATUS, PMAX, PMIN, ...
0043 MU_PMAX, MU_PMIN, MU_QMAX, MU_QMIN, PC1, PC2, QC1MIN, QC1MAX, ...
0044 QC2MIN, QC2MAX, RAMP_AGC, RAMP_10, RAMP_30, RAMP_Q, APF] = idx_gen;
0045 [PW_LINEAR, POLYNOMIAL, MODEL, STARTUP, SHUTDOWN, NCOST, COST] = idx_cost;
0046
0047
0048
0049
0050 gencost0 = [
0051 2 0 0 3 0.01 0.1 1 0 0 0 0 0;
0052 2 0 0 5 0.0006 0.005 0.04 0.3 2 0 0 0;
0053 1 0 0 4 0 0 10 200 20 600 30 1200;
0054 1 0 0 4 -30 -2400 -20 -1800 -10 -1000 0 0;
0055 ];
0056
0057
0058 gencost = modcost(gencost0, 5, 'SCALE_F');
0059
0060 t = 'modcost SCALE_F - quadratic';
0061 t_is(totcost(gencost, [0;0;0;0])/5, [1;2;0;0], 8, t);
0062 t_is(totcost(gencost, [1;0;0;0])/5, [1.11;2;0;0], 8, t);
0063 t_is(totcost(gencost, [2;0;0;0])/5, [1.24;2;0;0], 8, t);
0064
0065 t = 'modcost SCALE_F - 4th order polynomial';
0066 t_is(totcost(gencost, [0;0;0;0])/5, [1;2; 0;0], 8, t);
0067 t_is(totcost(gencost, [0;1;0;0])/5, [1;2.3456;0;0], 8, t);
0068 t_is(totcost(gencost, [0;2;0;0])/5, [1;2.8096;0;0], 8, t);
0069
0070 t = 'modcost SCALE_F - pwl (gen)';
0071 t_is(totcost(gencost, [0;0;5;0 ])/5, [1;2;100;0], 8, t);
0072 t_is(totcost(gencost, [0;0;10;0])/5, [1;2;200;0], 8, t);
0073 t_is(totcost(gencost, [0;0;15;0])/5, [1;2;400;0], 8, t);
0074 t_is(totcost(gencost, [0;0;20;0])/5, [1;2;600;0], 8, t);
0075 t_is(totcost(gencost, [0;0;25;0])/5, [1;2;900;0], 8, t);
0076 t_is(totcost(gencost, [0;0;30;0])/5, [1;2;1200;0], 8, t);
0077 t_is(totcost(gencost, [0;0;35;0])/5, [1;2;1500;0], 8, t);
0078
0079 t = 'modcost SCALE_F - pwl (load)';
0080 t_is(totcost(gencost, [0;0;0;-5 ])/5, [1;2;0;-500], 8, t);
0081 t_is(totcost(gencost, [0;0;0;-10])/5, [1;2;0;-1000], 8, t);
0082 t_is(totcost(gencost, [0;0;0;-15])/5, [1;2;0;-1400], 8, t);
0083 t_is(totcost(gencost, [0;0;0;-20])/5, [1;2;0;-1800], 8, t);
0084 t_is(totcost(gencost, [0;0;0;-25])/5, [1;2;0;-2100], 8, t);
0085 t_is(totcost(gencost, [0;0;0;-30])/5, [1;2;0;-2400], 8, t);
0086 t_is(totcost(gencost, [0;0;0;-35])/5, [1;2;0;-2700], 8, t);
0087
0088
0089 gencost = modcost(gencost0, 2, 'SCALE_X');
0090
0091 t = 'modcost SCALE_X - quadratic';
0092 t_is(totcost(gencost, [0;0;0;0]*2), [1;2;0;0], 8, t);
0093 t_is(totcost(gencost, [1;0;0;0]*2), [1.11;2;0;0], 8, t);
0094 t_is(totcost(gencost, [2;0;0;0]*2), [1.24;2;0;0], 8, t);
0095
0096 t = 'modcost SCALE_X - 4th order polynomial';
0097 t_is(totcost(gencost, [0;0;0;0]*2), [1;2; 0;0], 8, t);
0098 t_is(totcost(gencost, [0;1;0;0]*2), [1;2.3456;0;0], 8, t);
0099 t_is(totcost(gencost, [0;2;0;0]*2), [1;2.8096;0;0], 8, t);
0100
0101 t = 'modcost SCALE_X - pwl (gen)';
0102 t_is(totcost(gencost, [0;0;5;0 ]*2), [1;2;100;0], 8, t);
0103 t_is(totcost(gencost, [0;0;10;0]*2), [1;2;200;0], 8, t);
0104 t_is(totcost(gencost, [0;0;15;0]*2), [1;2;400;0], 8, t);
0105 t_is(totcost(gencost, [0;0;20;0]*2), [1;2;600;0], 8, t);
0106 t_is(totcost(gencost, [0;0;25;0]*2), [1;2;900;0], 8, t);
0107 t_is(totcost(gencost, [0;0;30;0]*2), [1;2;1200;0], 8, t);
0108 t_is(totcost(gencost, [0;0;35;0]*2), [1;2;1500;0], 8, t);
0109
0110 t = 'modcost SCALE_X - pwl (load)';
0111 t_is(totcost(gencost, [0;0;0;-5 ]*2), [1;2;0;-500], 8, t);
0112 t_is(totcost(gencost, [0;0;0;-10]*2), [1;2;0;-1000], 8, t);
0113 t_is(totcost(gencost, [0;0;0;-15]*2), [1;2;0;-1400], 8, t);
0114 t_is(totcost(gencost, [0;0;0;-20]*2), [1;2;0;-1800], 8, t);
0115 t_is(totcost(gencost, [0;0;0;-25]*2), [1;2;0;-2100], 8, t);
0116 t_is(totcost(gencost, [0;0;0;-30]*2), [1;2;0;-2400], 8, t);
0117 t_is(totcost(gencost, [0;0;0;-35]*2), [1;2;0;-2700], 8, t);
0118
0119
0120 gencost = modcost(gencost0, 3, 'SHIFT_F');
0121
0122 t = 'modcost SHIFT_F - quadratic';
0123 t_is(totcost(gencost, [0;0;0;0])-3, [1;2;0;0], 8, t);
0124 t_is(totcost(gencost, [1;0;0;0])-3, [1.11;2;0;0], 8, t);
0125 t_is(totcost(gencost, [2;0;0;0])-3, [1.24;2;0;0], 8, t);
0126
0127 t = 'modcost SHIFT_F - 4th order polynomial';
0128 t_is(totcost(gencost, [0;0;0;0])-3, [1;2; 0;0], 8, t);
0129 t_is(totcost(gencost, [0;1;0;0])-3, [1;2.3456;0;0], 8, t);
0130 t_is(totcost(gencost, [0;2;0;0])-3, [1;2.8096;0;0], 8, t);
0131
0132 t = 'modcost SHIFT_F - pwl (gen)';
0133 t_is(totcost(gencost, [0;0;5;0 ])-3, [1;2;100;0], 8, t);
0134 t_is(totcost(gencost, [0;0;10;0])-3, [1;2;200;0], 8, t);
0135 t_is(totcost(gencost, [0;0;15;0])-3, [1;2;400;0], 8, t);
0136 t_is(totcost(gencost, [0;0;20;0])-3, [1;2;600;0], 8, t);
0137 t_is(totcost(gencost, [0;0;25;0])-3, [1;2;900;0], 8, t);
0138 t_is(totcost(gencost, [0;0;30;0])-3, [1;2;1200;0], 8, t);
0139 t_is(totcost(gencost, [0;0;35;0])-3, [1;2;1500;0], 8, t);
0140
0141 t = 'modcost SHIFT_F - pwl (load)';
0142 t_is(totcost(gencost, [0;0;0;-5 ])-3, [1;2;0;-500], 8, t);
0143 t_is(totcost(gencost, [0;0;0;-10])-3, [1;2;0;-1000], 8, t);
0144 t_is(totcost(gencost, [0;0;0;-15])-3, [1;2;0;-1400], 8, t);
0145 t_is(totcost(gencost, [0;0;0;-20])-3, [1;2;0;-1800], 8, t);
0146 t_is(totcost(gencost, [0;0;0;-25])-3, [1;2;0;-2100], 8, t);
0147 t_is(totcost(gencost, [0;0;0;-30])-3, [1;2;0;-2400], 8, t);
0148 t_is(totcost(gencost, [0;0;0;-35])-3, [1;2;0;-2700], 8, t);
0149
0150
0151 gencost = modcost(gencost0, -4, 'SHIFT_X');
0152
0153 t = 'modcost SHIFT_X - quadratic';
0154 t_is(totcost(gencost, [0;0;0;0]-4), [1;2;0;0], 8, t);
0155 t_is(totcost(gencost, [1;0;0;0]-4), [1.11;2;0;0], 8, t);
0156 t_is(totcost(gencost, [2;0;0;0]-4), [1.24;2;0;0], 8, t);
0157
0158 t = 'modcost SHIFT_X - 4th order polynomial';
0159 t_is(totcost(gencost, [0;0;0;0]-4), [1;2; 0;0], 8, t);
0160 t_is(totcost(gencost, [0;1;0;0]-4), [1;2.3456;0;0], 8, t);
0161 t_is(totcost(gencost, [0;2;0;0]-4), [1;2.8096;0;0], 8, t);
0162
0163 t = 'modcost SHIFT_X - pwl (gen)';
0164 t_is(totcost(gencost, [0;0;5;0 ]-4), [1;2;100;0], 8, t);
0165 t_is(totcost(gencost, [0;0;10;0]-4), [1;2;200;0], 8, t);
0166 t_is(totcost(gencost, [0;0;15;0]-4), [1;2;400;0], 8, t);
0167 t_is(totcost(gencost, [0;0;20;0]-4), [1;2;600;0], 8, t);
0168 t_is(totcost(gencost, [0;0;25;0]-4), [1;2;900;0], 8, t);
0169 t_is(totcost(gencost, [0;0;30;0]-4), [1;2;1200;0], 8, t);
0170 t_is(totcost(gencost, [0;0;35;0]-4), [1;2;1500;0], 8, t);
0171
0172 t = 'modcost SHIFT_X - pwl (load)';
0173 t_is(totcost(gencost, [0;0;0;-5 ]-4), [1;2;0;-500], 8, t);
0174 t_is(totcost(gencost, [0;0;0;-10]-4), [1;2;0;-1000], 8, t);
0175 t_is(totcost(gencost, [0;0;0;-15]-4), [1;2;0;-1400], 8, t);
0176 t_is(totcost(gencost, [0;0;0;-20]-4), [1;2;0;-1800], 8, t);
0177 t_is(totcost(gencost, [0;0;0;-25]-4), [1;2;0;-2100], 8, t);
0178 t_is(totcost(gencost, [0;0;0;-30]-4), [1;2;0;-2400], 8, t);
0179 t_is(totcost(gencost, [0;0;0;-35]-4), [1;2;0;-2700], 8, t);
0180
0181 t = 'modcost empty gencost';
0182 gencost = modcost([], 7);
0183 t_ok(isempty(gencost), t);
0184
0185
0186 alpha = [10; 9; 8; 7];
0187 gencost = modcost(gencost0, alpha, 'SCALE_F');
0188
0189 t = 'modcost vector SCALE_F - quadratic';
0190 t_is(totcost(gencost, [0;0;0;0])./alpha, [1;2;0;0], 8, t);
0191 t_is(totcost(gencost, [1;0;0;0])./alpha, [1.11;2;0;0], 8, t);
0192 t_is(totcost(gencost, [2;0;0;0])./alpha, [1.24;2;0;0], 8, t);
0193
0194 t = 'modcost vector SCALE_F - 4th order polynomial';
0195 t_is(totcost(gencost, [0;0;0;0])./alpha, [1;2; 0;0], 8, t);
0196 t_is(totcost(gencost, [0;1;0;0])./alpha, [1;2.3456;0;0], 8, t);
0197 t_is(totcost(gencost, [0;2;0;0])./alpha, [1;2.8096;0;0], 8, t);
0198
0199 t = 'modcost vector SCALE_F - pwl (gen)';
0200 t_is(totcost(gencost, [0;0;5;0 ])./alpha, [1;2;100;0], 8, t);
0201 t_is(totcost(gencost, [0;0;10;0])./alpha, [1;2;200;0], 8, t);
0202 t_is(totcost(gencost, [0;0;15;0])./alpha, [1;2;400;0], 8, t);
0203 t_is(totcost(gencost, [0;0;20;0])./alpha, [1;2;600;0], 8, t);
0204 t_is(totcost(gencost, [0;0;25;0])./alpha, [1;2;900;0], 8, t);
0205 t_is(totcost(gencost, [0;0;30;0])./alpha, [1;2;1200;0], 8, t);
0206 t_is(totcost(gencost, [0;0;35;0])./alpha, [1;2;1500;0], 8, t);
0207
0208 t = 'modcost vector SCALE_F - pwl (load)';
0209 t_is(totcost(gencost, [0;0;0;-5 ])./alpha, [1;2;0;-500], 8, t);
0210 t_is(totcost(gencost, [0;0;0;-10])./alpha, [1;2;0;-1000], 8, t);
0211 t_is(totcost(gencost, [0;0;0;-15])./alpha, [1;2;0;-1400], 8, t);
0212 t_is(totcost(gencost, [0;0;0;-20])./alpha, [1;2;0;-1800], 8, t);
0213 t_is(totcost(gencost, [0;0;0;-25])./alpha, [1;2;0;-2100], 8, t);
0214 t_is(totcost(gencost, [0;0;0;-30])./alpha, [1;2;0;-2400], 8, t);
0215 t_is(totcost(gencost, [0;0;0;-35])./alpha, [1;2;0;-2700], 8, t);
0216
0217
0218 gencost = modcost(gencost0, alpha, 'SCALE_X');
0219
0220 t = 'modcost vector SCALE_X - quadratic';
0221 t_is(totcost(gencost, [0;0;0;0].*alpha), [1;2;0;0], 8, t);
0222 t_is(totcost(gencost, [1;0;0;0].*alpha), [1.11;2;0;0], 8, t);
0223 t_is(totcost(gencost, [2;0;0;0].*alpha), [1.24;2;0;0], 8, t);
0224
0225 t = 'modcost vector SCALE_X - 4th order polynomial';
0226 t_is(totcost(gencost, [0;0;0;0].*alpha), [1;2; 0;0], 8, t);
0227 t_is(totcost(gencost, [0;1;0;0].*alpha), [1;2.3456;0;0], 8, t);
0228 t_is(totcost(gencost, [0;2;0;0].*alpha), [1;2.8096;0;0], 8, t);
0229
0230 t = 'modcost vector SCALE_X - pwl (gen)';
0231 t_is(totcost(gencost, [0;0;5;0 ].*alpha), [1;2;100;0], 8, t);
0232 t_is(totcost(gencost, [0;0;10;0].*alpha), [1;2;200;0], 8, t);
0233 t_is(totcost(gencost, [0;0;15;0].*alpha), [1;2;400;0], 8, t);
0234 t_is(totcost(gencost, [0;0;20;0].*alpha), [1;2;600;0], 8, t);
0235 t_is(totcost(gencost, [0;0;25;0].*alpha), [1;2;900;0], 8, t);
0236 t_is(totcost(gencost, [0;0;30;0].*alpha), [1;2;1200;0], 8, t);
0237 t_is(totcost(gencost, [0;0;35;0].*alpha), [1;2;1500;0], 8, t);
0238
0239 t = 'modcost vector SCALE_X - pwl (load)';
0240 t_is(totcost(gencost, [0;0;0;-5 ].*alpha), [1;2;0;-500], 8, t);
0241 t_is(totcost(gencost, [0;0;0;-10].*alpha), [1;2;0;-1000], 8, t);
0242 t_is(totcost(gencost, [0;0;0;-15].*alpha), [1;2;0;-1400], 8, t);
0243 t_is(totcost(gencost, [0;0;0;-20].*alpha), [1;2;0;-1800], 8, t);
0244 t_is(totcost(gencost, [0;0;0;-25].*alpha), [1;2;0;-2100], 8, t);
0245 t_is(totcost(gencost, [0;0;0;-30].*alpha), [1;2;0;-2400], 8, t);
0246 t_is(totcost(gencost, [0;0;0;-35].*alpha), [1;2;0;-2700], 8, t);
0247
0248
0249 gencost = modcost(gencost0, alpha, 'SHIFT_F');
0250
0251 t = 'modcost vector SHIFT_F - quadratic';
0252 t_is(totcost(gencost, [0;0;0;0])-alpha, [1;2;0;0], 8, t);
0253 t_is(totcost(gencost, [1;0;0;0])-alpha, [1.11;2;0;0], 8, t);
0254 t_is(totcost(gencost, [2;0;0;0])-alpha, [1.24;2;0;0], 8, t);
0255
0256 t = 'modcost vector SHIFT_F - 4th order polynomial';
0257 t_is(totcost(gencost, [0;0;0;0])-alpha, [1;2; 0;0], 8, t);
0258 t_is(totcost(gencost, [0;1;0;0])-alpha, [1;2.3456;0;0], 8, t);
0259 t_is(totcost(gencost, [0;2;0;0])-alpha, [1;2.8096;0;0], 8, t);
0260
0261 t = 'modcost vector SHIFT_F - pwl (gen)';
0262 t_is(totcost(gencost, [0;0;5;0 ])-alpha, [1;2;100;0], 8, t);
0263 t_is(totcost(gencost, [0;0;10;0])-alpha, [1;2;200;0], 8, t);
0264 t_is(totcost(gencost, [0;0;15;0])-alpha, [1;2;400;0], 8, t);
0265 t_is(totcost(gencost, [0;0;20;0])-alpha, [1;2;600;0], 8, t);
0266 t_is(totcost(gencost, [0;0;25;0])-alpha, [1;2;900;0], 8, t);
0267 t_is(totcost(gencost, [0;0;30;0])-alpha, [1;2;1200;0], 8, t);
0268 t_is(totcost(gencost, [0;0;35;0])-alpha, [1;2;1500;0], 8, t);
0269
0270 t = 'modcost vector SHIFT_F - pwl (load)';
0271 t_is(totcost(gencost, [0;0;0;-5 ])-alpha, [1;2;0;-500], 8, t);
0272 t_is(totcost(gencost, [0;0;0;-10])-alpha, [1;2;0;-1000], 8, t);
0273 t_is(totcost(gencost, [0;0;0;-15])-alpha, [1;2;0;-1400], 8, t);
0274 t_is(totcost(gencost, [0;0;0;-20])-alpha, [1;2;0;-1800], 8, t);
0275 t_is(totcost(gencost, [0;0;0;-25])-alpha, [1;2;0;-2100], 8, t);
0276 t_is(totcost(gencost, [0;0;0;-30])-alpha, [1;2;0;-2400], 8, t);
0277 t_is(totcost(gencost, [0;0;0;-35])-alpha, [1;2;0;-2700], 8, t);
0278
0279
0280 gencost = modcost(gencost0, -alpha, 'SHIFT_X');
0281
0282 t = 'modcost vector SHIFT_X - quadratic';
0283 t_is(totcost(gencost, [0;0;0;0]-alpha), [1;2;0;0], 8, t);
0284 t_is(totcost(gencost, [1;0;0;0]-alpha), [1.11;2;0;0], 8, t);
0285 t_is(totcost(gencost, [2;0;0;0]-alpha), [1.24;2;0;0], 8, t);
0286
0287 t = 'modcost vector SHIFT_X - 4th order polynomial';
0288 t_is(totcost(gencost, [0;0;0;0]-alpha), [1;2; 0;0], 8, t);
0289 t_is(totcost(gencost, [0;1;0;0]-alpha), [1;2.3456;0;0], 8, t);
0290 t_is(totcost(gencost, [0;2;0;0]-alpha), [1;2.8096;0;0], 8, t);
0291
0292 t = 'modcost vector SHIFT_X - pwl (gen)';
0293 t_is(totcost(gencost, [0;0;5;0 ]-alpha), [1;2;100;0], 8, t);
0294 t_is(totcost(gencost, [0;0;10;0]-alpha), [1;2;200;0], 8, t);
0295 t_is(totcost(gencost, [0;0;15;0]-alpha), [1;2;400;0], 8, t);
0296 t_is(totcost(gencost, [0;0;20;0]-alpha), [1;2;600;0], 8, t);
0297 t_is(totcost(gencost, [0;0;25;0]-alpha), [1;2;900;0], 8, t);
0298 t_is(totcost(gencost, [0;0;30;0]-alpha), [1;2;1200;0], 8, t);
0299 t_is(totcost(gencost, [0;0;35;0]-alpha), [1;2;1500;0], 8, t);
0300
0301 t = 'modcost vector SHIFT_X - pwl (load)';
0302 t_is(totcost(gencost, [0;0;0;-5 ]-alpha), [1;2;0;-500], 8, t);
0303 t_is(totcost(gencost, [0;0;0;-10]-alpha), [1;2;0;-1000], 8, t);
0304 t_is(totcost(gencost, [0;0;0;-15]-alpha), [1;2;0;-1400], 8, t);
0305 t_is(totcost(gencost, [0;0;0;-20]-alpha), [1;2;0;-1800], 8, t);
0306 t_is(totcost(gencost, [0;0;0;-25]-alpha), [1;2;0;-2100], 8, t);
0307 t_is(totcost(gencost, [0;0;0;-30]-alpha), [1;2;0;-2400], 8, t);
0308 t_is(totcost(gencost, [0;0;0;-35]-alpha), [1;2;0;-2700], 8, t);
0309
0310 t = 'modcost vector empty gencost';
0311 gencost = modcost([], alpha);
0312 t_ok(isempty(gencost), t);
0313
0314 t_end;