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 = 80;
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 gencost = modcost(gencost0, 5, 'SCALE_F');
0058
0059 t = 'modcost SCALE_F - quadratic';
0060 t_is(totcost(gencost, [0;0;0;0])/5, [1;2;0;0], 8, t);
0061 t_is(totcost(gencost, [1;0;0;0])/5, [1.11;2;0;0], 8, t);
0062 t_is(totcost(gencost, [2;0;0;0])/5, [1.24;2;0;0], 8, t);
0063
0064 t = 'modcost SCALE_F - 4th order polynomial';
0065 t_is(totcost(gencost, [0;0;0;0])/5, [1;2; 0;0], 8, t);
0066 t_is(totcost(gencost, [0;1;0;0])/5, [1;2.3456;0;0], 8, t);
0067 t_is(totcost(gencost, [0;2;0;0])/5, [1;2.8096;0;0], 8, t);
0068
0069 t = 'modcost SCALE_F - pwl (gen)';
0070 t_is(totcost(gencost, [0;0;5;0 ])/5, [1;2;100;0], 8, t);
0071 t_is(totcost(gencost, [0;0;10;0])/5, [1;2;200;0], 8, t);
0072 t_is(totcost(gencost, [0;0;15;0])/5, [1;2;400;0], 8, t);
0073 t_is(totcost(gencost, [0;0;20;0])/5, [1;2;600;0], 8, t);
0074 t_is(totcost(gencost, [0;0;25;0])/5, [1;2;900;0], 8, t);
0075 t_is(totcost(gencost, [0;0;30;0])/5, [1;2;1200;0], 8, t);
0076 t_is(totcost(gencost, [0;0;35;0])/5, [1;2;1500;0], 8, t);
0077
0078 t = 'modcost SCALE_F - pwl (load)';
0079 t_is(totcost(gencost, [0;0;0;-5 ])/5, [1;2;0;-500], 8, t);
0080 t_is(totcost(gencost, [0;0;0;-10])/5, [1;2;0;-1000], 8, t);
0081 t_is(totcost(gencost, [0;0;0;-15])/5, [1;2;0;-1400], 8, t);
0082 t_is(totcost(gencost, [0;0;0;-20])/5, [1;2;0;-1800], 8, t);
0083 t_is(totcost(gencost, [0;0;0;-25])/5, [1;2;0;-2100], 8, t);
0084 t_is(totcost(gencost, [0;0;0;-30])/5, [1;2;0;-2400], 8, t);
0085 t_is(totcost(gencost, [0;0;0;-35])/5, [1;2;0;-2700], 8, t);
0086
0087
0088 gencost = modcost(gencost0, 2, 'SCALE_X');
0089
0090 t = 'modcost SCALE_X - quadratic';
0091 t_is(totcost(gencost, [0;0;0;0]*2), [1;2;0;0], 8, t);
0092 t_is(totcost(gencost, [1;0;0;0]*2), [1.11;2;0;0], 8, t);
0093 t_is(totcost(gencost, [2;0;0;0]*2), [1.24;2;0;0], 8, t);
0094
0095 t = 'modcost SCALE_X - 4th order polynomial';
0096 t_is(totcost(gencost, [0;0;0;0]*2), [1;2; 0;0], 8, t);
0097 t_is(totcost(gencost, [0;1;0;0]*2), [1;2.3456;0;0], 8, t);
0098 t_is(totcost(gencost, [0;2;0;0]*2), [1;2.8096;0;0], 8, t);
0099
0100 t = 'modcost SCALE_X - pwl (gen)';
0101 t_is(totcost(gencost, [0;0;5;0 ]*2), [1;2;100;0], 8, t);
0102 t_is(totcost(gencost, [0;0;10;0]*2), [1;2;200;0], 8, t);
0103 t_is(totcost(gencost, [0;0;15;0]*2), [1;2;400;0], 8, t);
0104 t_is(totcost(gencost, [0;0;20;0]*2), [1;2;600;0], 8, t);
0105 t_is(totcost(gencost, [0;0;25;0]*2), [1;2;900;0], 8, t);
0106 t_is(totcost(gencost, [0;0;30;0]*2), [1;2;1200;0], 8, t);
0107 t_is(totcost(gencost, [0;0;35;0]*2), [1;2;1500;0], 8, t);
0108
0109 t = 'modcost SCALE_X - pwl (load)';
0110 t_is(totcost(gencost, [0;0;0;-5 ]*2), [1;2;0;-500], 8, t);
0111 t_is(totcost(gencost, [0;0;0;-10]*2), [1;2;0;-1000], 8, t);
0112 t_is(totcost(gencost, [0;0;0;-15]*2), [1;2;0;-1400], 8, t);
0113 t_is(totcost(gencost, [0;0;0;-20]*2), [1;2;0;-1800], 8, t);
0114 t_is(totcost(gencost, [0;0;0;-25]*2), [1;2;0;-2100], 8, t);
0115 t_is(totcost(gencost, [0;0;0;-30]*2), [1;2;0;-2400], 8, t);
0116 t_is(totcost(gencost, [0;0;0;-35]*2), [1;2;0;-2700], 8, t);
0117
0118
0119 gencost = modcost(gencost0, 3, 'SHIFT_F');
0120
0121 t = 'modcost SHIFT_F - quadratic';
0122 t_is(totcost(gencost, [0;0;0;0])-3, [1;2;0;0], 8, t);
0123 t_is(totcost(gencost, [1;0;0;0])-3, [1.11;2;0;0], 8, t);
0124 t_is(totcost(gencost, [2;0;0;0])-3, [1.24;2;0;0], 8, t);
0125
0126 t = 'modcost SHIFT_F - 4th order polynomial';
0127 t_is(totcost(gencost, [0;0;0;0])-3, [1;2; 0;0], 8, t);
0128 t_is(totcost(gencost, [0;1;0;0])-3, [1;2.3456;0;0], 8, t);
0129 t_is(totcost(gencost, [0;2;0;0])-3, [1;2.8096;0;0], 8, t);
0130
0131 t = 'modcost SHIFT_F - pwl (gen)';
0132 t_is(totcost(gencost, [0;0;5;0 ])-3, [1;2;100;0], 8, t);
0133 t_is(totcost(gencost, [0;0;10;0])-3, [1;2;200;0], 8, t);
0134 t_is(totcost(gencost, [0;0;15;0])-3, [1;2;400;0], 8, t);
0135 t_is(totcost(gencost, [0;0;20;0])-3, [1;2;600;0], 8, t);
0136 t_is(totcost(gencost, [0;0;25;0])-3, [1;2;900;0], 8, t);
0137 t_is(totcost(gencost, [0;0;30;0])-3, [1;2;1200;0], 8, t);
0138 t_is(totcost(gencost, [0;0;35;0])-3, [1;2;1500;0], 8, t);
0139
0140 t = 'modcost SHIFT_F - pwl (load)';
0141 t_is(totcost(gencost, [0;0;0;-5 ])-3, [1;2;0;-500], 8, t);
0142 t_is(totcost(gencost, [0;0;0;-10])-3, [1;2;0;-1000], 8, t);
0143 t_is(totcost(gencost, [0;0;0;-15])-3, [1;2;0;-1400], 8, t);
0144 t_is(totcost(gencost, [0;0;0;-20])-3, [1;2;0;-1800], 8, t);
0145 t_is(totcost(gencost, [0;0;0;-25])-3, [1;2;0;-2100], 8, t);
0146 t_is(totcost(gencost, [0;0;0;-30])-3, [1;2;0;-2400], 8, t);
0147 t_is(totcost(gencost, [0;0;0;-35])-3, [1;2;0;-2700], 8, t);
0148
0149
0150 gencost = modcost(gencost0, -4, 'SHIFT_X');
0151
0152 t = 'modcost SHIFT_X - quadratic';
0153 t_is(totcost(gencost, [0;0;0;0]-4), [1;2;0;0], 8, t);
0154 t_is(totcost(gencost, [1;0;0;0]-4), [1.11;2;0;0], 8, t);
0155 t_is(totcost(gencost, [2;0;0;0]-4), [1.24;2;0;0], 8, t);
0156
0157 t = 'modcost SHIFT_X - 4th order polynomial';
0158 t_is(totcost(gencost, [0;0;0;0]-4), [1;2; 0;0], 8, t);
0159 t_is(totcost(gencost, [0;1;0;0]-4), [1;2.3456;0;0], 8, t);
0160 t_is(totcost(gencost, [0;2;0;0]-4), [1;2.8096;0;0], 8, t);
0161
0162 t = 'modcost SHIFT_X - pwl (gen)';
0163 t_is(totcost(gencost, [0;0;5;0 ]-4), [1;2;100;0], 8, t);
0164 t_is(totcost(gencost, [0;0;10;0]-4), [1;2;200;0], 8, t);
0165 t_is(totcost(gencost, [0;0;15;0]-4), [1;2;400;0], 8, t);
0166 t_is(totcost(gencost, [0;0;20;0]-4), [1;2;600;0], 8, t);
0167 t_is(totcost(gencost, [0;0;25;0]-4), [1;2;900;0], 8, t);
0168 t_is(totcost(gencost, [0;0;30;0]-4), [1;2;1200;0], 8, t);
0169 t_is(totcost(gencost, [0;0;35;0]-4), [1;2;1500;0], 8, t);
0170
0171 t = 'modcost SHIFT_X - pwl (load)';
0172 t_is(totcost(gencost, [0;0;0;-5 ]-4), [1;2;0;-500], 8, t);
0173 t_is(totcost(gencost, [0;0;0;-10]-4), [1;2;0;-1000], 8, t);
0174 t_is(totcost(gencost, [0;0;0;-15]-4), [1;2;0;-1400], 8, t);
0175 t_is(totcost(gencost, [0;0;0;-20]-4), [1;2;0;-1800], 8, t);
0176 t_is(totcost(gencost, [0;0;0;-25]-4), [1;2;0;-2100], 8, t);
0177 t_is(totcost(gencost, [0;0;0;-30]-4), [1;2;0;-2400], 8, t);
0178 t_is(totcost(gencost, [0;0;0;-35]-4), [1;2;0;-2700], 8, t);
0179
0180 t_end;