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