Home > matpower5.0 > t > t_modcost.m

t_modcost

PURPOSE ^

T_MODCOST Tests for code in MODCOST.

SYNOPSIS ^

function t_modcost(quiet)

DESCRIPTION ^

T_MODCOST  Tests for code in MODCOST.

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function t_modcost(quiet)
0002 %T_MODCOST  Tests for code in MODCOST.
0003 
0004 %   MATPOWER
0005 %   $Id: t_modcost.m 2190 2013-08-01 18:46:08Z ray $
0006 %   by Ray Zimmerman, PSERC Cornell
0007 %   Copyright (c) 2010 by Power System Engineering Research Center (PSERC)
0008 %
0009 %   This file is part of MATPOWER.
0010 %   See http://www.pserc.cornell.edu/matpower/ for more info.
0011 %
0012 %   MATPOWER is free software: you can redistribute it and/or modify
0013 %   it under the terms of the GNU General Public License as published
0014 %   by the Free Software Foundation, either version 3 of the License,
0015 %   or (at your option) any later version.
0016 %
0017 %   MATPOWER is distributed in the hope that it will be useful,
0018 %   but WITHOUT ANY WARRANTY; without even the implied warranty of
0019 %   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0020 %   GNU General Public License for more details.
0021 %
0022 %   You should have received a copy of the GNU General Public License
0023 %   along with MATPOWER. If not, see <http://www.gnu.org/licenses/>.
0024 %
0025 %   Additional permission under GNU GPL version 3 section 7
0026 %
0027 %   If you modify MATPOWER, or any covered work, to interface with
0028 %   other modules (such as MATLAB code and MEX-files) available in a
0029 %   MATLAB(R) or comparable environment containing parts covered
0030 %   under other licensing terms, the licensors of MATPOWER grant
0031 %   you additional permission to convey the resulting work.
0032 
0033 if nargin < 1
0034     quiet = 0;
0035 end
0036 
0037 n_tests = 162;
0038 
0039 t_begin(n_tests, quiet);
0040 
0041 %% define named indices into data matrices
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 %% generator cost data
0048 %    1    startup    shutdown    n    x1    y1    ...    xn    yn
0049 %    2    startup    shutdown    n    c(n-1)    ...    c0
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 %%-----  scalar values for alpha  -----
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 %%-----  vector values for alpha  -----
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;

Generated on Mon 26-Jan-2015 15:21:31 by m2html © 2005