⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 t_off2case.m

📁 MATPOWER 一款基于MATLAB的电力系统潮流计算及优化的程序
💻 M
字号:
function t_off2case(quiet)%T_OFF2CASE  Tests for code in off2case.m.%   MATPOWER%   $Id: t_off2case.m,v 1.6 2006/07/10 14:32:27 ray Exp $%   by Ray Zimmerman, PSERC Cornell%   Copyright (c) 2005-2006 by Power System Engineering Research Center (PSERC)%   See http://www.pserc.cornell.edu/matpower/ for more info.if nargin < 1    quiet = 0;endn_tests = 35;t_begin(n_tests, quiet);%% define named indices into data matrices[GEN_BUS, PG, QG, QMAX, QMIN, VG, MBASE, GEN_STATUS, PMAX, PMIN, ...    MU_PMAX, MU_PMIN, MU_QMAX, MU_QMIN, PC1, PC2, QC1MIN, QC1MAX, ...    QC2MIN, QC2MAX, RAMP_AGC, RAMP_10, RAMP_30, RAMP_Q, APF] = idx_gen;[PW_LINEAR, POLYNOMIAL, MODEL, STARTUP, SHUTDOWN, NCOST, COST] = idx_cost;%% generator data%	bus	Pg	Qg	Qmax	Qmin	Vg	mBase	status	Pmax	Pmin	Pc1	Pc2	Qc1min	Qc1max	Qc2min	Qc2max	ramp_agc	ramp_10	ramp_30	ramp_q	apfgen0 = [	1	10	0	60	-15	1	100	1	60	10	0	0	0	0	0	0	0	0	0	0	0;	2	10	0	60	-15	1	100	1	60	12	0	0	0	0	0	0	0	0	0	0	0;	7	-30	-15	0	-15	1	100	1	0	-30	0	0	0	0	0	0	0	0	0	0	0;	13	10	0	60	-15	1	100	1	60	12	0	0	0	0	0	0	0	0	0	0	0;	30	-30	7.5	7.5	0	1	100	1	0	-30	0	0	0	0	0	0	0	0	0	0	0;];%% generator cost data%	1	startup	shutdown	n	x1	y1	...	xn	yn%	2	startup	shutdown	n	c(n-1)	...	c0gencost0 = [	1	0	0	4	0	0	12	240	36	1200	60	2400;	1	100	0	4	0	0	12	240	36	1200	60	2400;	1	0	0	4	-30	0	-20	1000	-10	2000	0	3000;	1	0	0	4	0	0	12	240	36	1200	60	2400;	1	0	50	4	-30	0	-20	1000	-10	2000	0	3000;];if ~have_fcn('smartmarket')    t_skip(n_tests, 'smartmarket code not available');else	t = 'isload()';	t_is(isload(gen0), [0;0;1;0;1], 8, t);		G = find(~isload(gen0) );	L = find( isload(gen0) );	nGL = length(G) + length(L);		t = 'P offers only';	offers.P.qty = [25; 26; 27];	offers.P.prc = [10; 50; 100];	[gen, gencost] = off2case(gen0, gencost0, offers);		gen1 = gen0;	gen1(G, PMAX) = offers.P.qty;	gen1(L, GEN_STATUS) = 0;	t_is( gen, gen1, 8, [t ' - gen'] );		gencost1 = gencost0;	gencost1(G, NCOST:(NCOST+8)) = [[2 0 0 25 250; 2 0 0 26 1300; 2 0 0 27 2700] zeros(3,4)];		t_is( gencost, gencost1, 8, [t ' - gencost'] );		offers.P.qty = [25; 26; 0; 27; 0];	offers.P.prc = [10; 50; 0; 100; 0];	[gen, gencost] = off2case(gen0, gencost0, offers);	t_is( gen, gen1, 8, [t ' (all rows in offer) - gen'] );	t_is( gencost, gencost1, 8, [t ' (all rows in offer) - gencost'] );		t = 'P offers only (GEN_STATUS=0 for 0 qty offer)';	offers.P.qty = [0; 26; 27];	offers.P.prc = [10; 50; 100];	[gen, gencost] = off2case(gen0, gencost0, offers);		gen1 = gen0;	gen1(G(2:3), PMAX) = offers.P.qty(2:3);	gen1(G(1), GEN_STATUS) = 0;	gen1(L, GEN_STATUS) = 0;	t_is( gen, gen1, 8, [t ' - gen'] );		gencost1 = gencost0;	gencost1(G(2:3), NCOST:(NCOST+8)) = [[2 0 0 26 1300; 2 0 0 27 2700] zeros(2,4)];		t_is( gencost, gencost1, 8, [t ' - gencost'] );	t = 'P offers, lim.P.max_offer';	offers.P.qty = [25; 26; 27];	offers.P.prc = [10; 50; 100];	lim.P.max_offer = 75;	[gen, gencost] = off2case(gen0, gencost0, offers, [], lim);		gen1 = gen0;	gen1(G(1:2), PMAX) = offers.P.qty(1:2, :);	gen1([G(3); L], GEN_STATUS) = 0;	t_is( gen, gen1, 8, [t ' - gen'] );		gencost1 = gencost0;	gencost1(G(1:2), NCOST:(NCOST+8)) = [[2 0 0 25 250; 2 0 0 26 1300] zeros(2,4)];	t_is( gencost, gencost1, 8, [t ' - gencost'] );		t = 'P offers & P bids';	bids.P.qty = [20; 28];	bids.P.prc = [100; 10];	[gen, gencost] = off2case(gen0, gencost0, offers, bids);		gen1 = gen0;	gen1(G, PMAX) = offers.P.qty;	gen1(L, [PMIN QMIN QMAX]) = [-20 -10 0; -28 0 7];	t_is( gen, gen1, 8, [t ' - gen'] );		gencost1 = gencost0(:, 1:8);	gencost1(G, NCOST:(NCOST+4)) = [2 0 0 25 250; 2 0 0 26 1300; 2 0 0 27 2700];	gencost1(L, NCOST:(NCOST+4)) = [2 -20 -2000 0 0; 2 -28 -280 0 0];	t_is( gencost, gencost1, 8, [t ' - gencost'] );		t = 'P offers & P bids (all rows in bid)';	bids.P.qty = [0; 0; 20; 0; 28];	bids.P.prc = [0; 0; 100; 0; 10];	[gen, gencost] = off2case(gen0, gencost0, offers, bids);		t_is( gen, gen1, 8, [t ' - gen'] );	t_is( gencost, gencost1, 8, [t ' - gencost'] );		t = 'P offers & P bids (GEN_STATUS=0 for 0 qty bid)';	bids.P.qty = [0; 28];	bids.P.prc = [100; 10];	[gen, gencost] = off2case(gen0, gencost0, offers, bids);		gen1 = gen0;	gen1(G, PMAX) = offers.P.qty;	gen1(L(1), GEN_STATUS) = 0;	gen1(L(2), [PMIN QMIN QMAX]) = [-28 0 7];	t_is( gen, gen1, 8, [t ' - gen'] );		gencost1 = gencost0;	gencost1(G, NCOST:(NCOST+8)) = [[2 0 0 25 250; 2 0 0 26 1300; 2 0 0 27 2700] zeros(3,4)];	gencost1(L(2), NCOST:(NCOST+8)) = [[2 -28 -280 0 0] zeros(1,4)];	t_is( gencost, gencost1, 8, [t ' - gencost'] );		t = 'P offers & P bids (1 gen with both)';	gen2 = gen0;	gen2(2, PMIN) = -5;	bids.P.qty = [0; 3; 20; 0; 28];	bids.P.prc = [0; 50; 100; 0; 10];	[gen, gencost] = off2case(gen2, gencost0, offers, bids);		gen1 = gen2;	gen1(G, PMAX) = offers.P.qty;	gen1(2, PMIN) = -sum(bids.P.qty(2, :));	gen1(L, [PMIN QMIN QMAX]) = [-20 -10 0; -28 0 7];	t_is( gen, gen1, 8, [t ' - gen'] );		gencost1 = gencost0(:, 1:10);	gencost1(G, NCOST:(NCOST+6)) = [2 0 0 25 250 0 0; 3 -3 -150 0 0 26 1300; 2 0 0 27 2700 0 0];	gencost1(L, NCOST:(NCOST+6)) = [[2 -20 -2000 0 0; 2 -28 -280 0 0] zeros(2,2)];	t_is( gencost, gencost1, 8, [t ' - gencost'] );		t = 'P offers & P bids, lim.P.max_offer/min_bid';	bids.P.qty = [20; 28];	bids.P.prc = [100; 10];	lim.P.min_bid = 50;	[gen, gencost] = off2case(gen0, gencost0, offers, bids, lim);		gen1 = gen0;	gen1(G(1:2), PMAX) = offers.P.qty(1:2, :);	gen1([G(3); L(2)], GEN_STATUS) = 0;	gen1(L(1), [PMIN QMIN QMAX]) = [-20 -10 0];	t_is( gen, gen1, 8, [t ' - gen'] );		gencost1 = gencost0;	gencost1(G(1:2), NCOST:(NCOST+8)) = [[2 0 0 25 250; 2 0 0 26 1300] zeros(2,4)];	gencost1(L(1), NCOST:(NCOST+8)) = [2 -20 -2000 0 0 0 0 0 0];	t_is( gencost, gencost1, 8, [t ' - gencost'] );		t = 'P offers & P bids, lim.P.max_offer/min_bid, multi-block';	offers.P.qty = [10 40; 20 30; 25 25];	offers.P.prc = [10 100; 25 65; 50 90];	bids.P.qty = [20 10; 12 18];	bids.P.prc = [100 60; 70 10];	[gen, gencost] = off2case(gen0, gencost0, offers, bids, lim);		gen1 = gen0;	gen1(G, PMAX) = [10; 50; 25];	gen1(L, [PMIN QMIN QMAX]) = [-30 -15 0; -12 0 3];	t_is( gen, gen1, 8, [t ' - gen'] );		gencost1 = gencost0(:, 1:10);	gencost1(G, NCOST:(NCOST+6)) = [2 0 0 10 100 0 0; 3 0 0 20 500 50 2450; 2 0 0 25 1250 0 0];	gencost1(L, NCOST:(NCOST+6)) = [3 -30 -2600 -20 -2000 0 0; 2 -12 -840 0 0 0 0];	t_is( gencost, gencost1, 8, [t ' - gencost'] );		%%-----  reactive  -----	%% generator cost data	%	1	startup	shutdown	n	x1	y1	...	xn	yn	%	2	startup	shutdown	n	c(n-1)	...	c0	gencost0 = [		1	0	0	4	0	0	12	240	36	1200	60	2400;		1	100	0	4	0	0	12	240	36	1200	60	2400;		1	0	0	4	-30	0	-20	1000	-10	2000	0	3000;		1	0	0	4	0	0	12	240	36	1200	60	2400;		1	0	50	4	-30	0	-20	1000	-10	2000	0	3000;		1	0	0	4	-15	-150	0	0	30	150	60	450;		1	100	0	2	0	0	0	0	0	0	0	0;		1	0	0	3	-20	-15	-10	-10	0	0	0	0;		1	0	0	3	0	0	40	80	60	180	0	0;		1	0	50	2	0	0	0	0	0	0	0	0;	];		t = 'PQ offers only';	offers.P.qty = [25; 26; 27];	offers.P.prc = [10; 50; 100];	offers.Q.qty = [10; 20; 30];	offers.Q.prc = [10; 5; 1];	[gen, gencost] = off2case(gen0, gencost0, offers);		gen1 = gen0;	gen1(G, PMAX) = offers.P.qty;	gen1(G, QMAX) = offers.Q.qty;	gen1(G, QMIN) = 0;	gen1(L, GEN_STATUS) = 0;	t_is( gen, gen1, 8, [t ' - gen'] );		gencost1 = gencost0;	gencost1(G, NCOST:(NCOST+8))     = [[2 0 0 25 250; 2 0 0 26 1300; 2 0 0 27 2700] zeros(3,4)];	gencost1(G+nGL, NCOST:(NCOST+8)) = [[2 0 0 10 100; 2 0 0 20 100; 2 0 0 30 30] zeros(3,4)];		t_is( gencost, gencost1, 8, [t ' - gencost'] );		t = 'PQ offers & PQ bids, lim.P/Q.max_offer/min_bid, multi-block';	offers.P.qty = [10 40; 20 30; 25 25];	offers.P.prc = [10 100; 25 65; 50 90];	bids.P.qty = [20 10; 12 18];	bids.P.prc = [100 60; 70 10];	offers.Q.qty = [5 5; 10 10; 15 15];	offers.Q.prc = [10 20; 5 60; 1 10];	bids.Q.qty = [15; 10; 15; 15; 0];	bids.Q.prc = [-10; 0; 5; -20; 10];	lim.Q.max_offer = 50;	lim.Q.min_bid = -15;	[gen, gencost] = off2case(gen0, gencost0, offers, bids, lim);		gen1 = gen0;	gen1(:, [GEN_STATUS PMIN PMAX QMIN QMAX]) = [ ...		1	10	10	-15	10;		1	12	50	-10	10;		1	-30	0	-15	0;		1	12	25	0	30;		0	-30	0	0	7.5	];	t_is( gen, gen1, 8, [t ' - gen'] );		gencost1 = gencost0(:, 1:12);	gencost1(:, NCOST:(NCOST+8)) = [ ...		2	0	0	10	100	0	0	0	0;		3	0	0	20	500	50	2450	0	0;		3	-30	-2600	-20	-2000	0	0	0	0;		2	0	0	25	1250	0	0	0	0;		4	-30	0	-20	1000	-10	2000	0	3000;		4	-15	150	0	0	5	50	10	150;		3	-10	0	0	0	10	50	0	0;		2	-15	-75	0	0	0	0	0	0;		3	0	0	15	15	30	165	0	0;		2	0	0	0	0	0	0	0	0	];	t_is( gencost, gencost1, 8, [t ' - gencost'] );		t = 'PQ offers & PQ bids, for gen, no P, no shutdown';	gen2 = gen0;	gen2(1, PMIN) = 0;	offers.P.qty = [0 40; 20 30; 25 25];	[gen, gencost] = off2case(gen2, gencost0, offers, bids, lim);		gen1(1, [PMIN PMAX QMIN QMAX]) = [ 0 0 -15 10 ];	t_is( gen, gen1, 8, [t ' - gen'] );		gencost1(1, NCOST:(NCOST+8)) = gencost0(1, NCOST:(NCOST+8));	t_is( gencost, gencost1, 8, [t ' - gencost'] );		t = 'PQ offers & PQ bids, for gen, no Q, no shutdown';	offers.P.qty = [10 40; 20 30; 25 25];	offers.Q.qty = [5 5; 0 10; 15 15];	bids.Q.qty = [15; 0; 15; 15; 0];	[gen, gencost] = off2case(gen0, gencost0, offers, bids, lim);		gen1(1, [PMIN PMAX QMIN QMAX]) = [ 10 10 -15 10 ];	%% restore original	gen1(2, [PMIN PMAX QMIN QMAX]) = [ 12 50 0 0 ];	t_is( gen, gen1, 8, [t ' - gen'] );		gencost1([1,2,7], NCOST:(NCOST+8)) = [ ...		2	0	0	10	100	0	0	0	0;		3	0	0	20	500	50	2450	0	0;		2	0	0	0	0	0	0	0	0	];	t_is( gencost, gencost1, 8, [t ' - gencost'] );		t = 'PQ offers & PQ bids, lim.P/Q.max_offer/min_bid, multi-block';	offers.P.qty = [10 40; 20 30; 25 25];	offers.P.prc = [10 100; 25 65; 50 90];	bids.P.qty = [10 0; 12 18];	bids.P.prc = [100 60; 70 10];	offers.Q.qty = [5 5; 10 10; 15 15];	offers.Q.prc = [10 20; 5 60; 1 10];	bids.Q.qty = [15; 10; 10; 15; 0];	bids.Q.prc = [-10; 0; 5; -20; 10];	lim.Q.max_offer = 50;	lim.Q.min_bid = -15;	[gen, gencost] = off2case(gen0, gencost0, offers, bids, lim);		gen1 = gen0;	gen1(:, [GEN_STATUS PMIN PMAX QMIN QMAX]) = [ ...		1	10	10	-15	10;		1	12	50	-10	10;		1	-10	0	-5	0;		1	12	25	0	30;		0	-30	0	0	7.5	];	t_is( gen, gen1, 8, [t ' - gen'] );		gencost1 = gencost0(:, 1:12);	gencost1(:, NCOST:(NCOST+8)) = [ ...		2	0	0	10	100	0	0	0	0;		3	0	0	20	500	50	2450	0	0;		2	-10	-1000	0	0	0	0	0	0;		2	0	0	25	1250	0	0	0	0;		4	-30	0	-20	1000	-10	2000	0	3000;		4	-15	150	0	0	5	50	10	150;		3	-10	0	0	0	10	50	0	0;		2	-10	-50	0	0	0	0	0	0;		3	0	0	15	15	30	165	0	0;		2	0	0	0	0	0	0	0	0	];	t_is( gencost, gencost1, 8, [t ' - gencost'] );	t = 'PQ offers & PQ bids, zero Q load w/P bid, shutdown bugfix';	gen1 = gen0;	gen1(5, [QG, QMIN, QMAX]) = 0;	[gen, gencost] = off2case(gen1, gencost0, offers, bids, lim);		gen1(:, [PMIN PMAX QMIN QMAX]) = [ ...		10	10	-15	10;		12	50	-10	10;		-10	0	-5	0;		12	25	0	30;		-12	0	0	0	];	t_is( gen, gen1, 8, [t ' - gen'] );		gencost1 = gencost0(:, 1:12);	gencost1(:, NCOST:(NCOST+8)) = [ ...		2	0	0	10	100	0	0	0	0;		3	0	0	20	500	50	2450	0	0;		2	-10	-1000	0	0	0	0	0	0;		2	0	0	25	1250	0	0	0	0;		2	-12	-840	0	0	0	0	0	0;		4	-15	150	0	0	5	50	10	150;		3	-10	0	0	0	10	50	0	0;		2	-10	-50	0	0	0	0	0	0;		3	0	0	15	15	30	165	0	0;		2	0	0	0	0	0	0	0	0	];	t_is( gencost, gencost1, 8, [t ' - gencost'] );	t = 'PQ offers & PQ bids, non-zero Q load w/no P bid, shutdown bugfix';	offers.P.qty = [10 40; 20 30; 25 25];	offers.P.prc = [10 100; 25 65; 50 90];	bids.P.qty = [0 10; 12 18];	bids.P.prc = [100 40; 70 10];	offers.Q.qty = [5 5; 10 10; 15 15];	offers.Q.prc = [10 20; 5 60; 1 10];	bids.Q.qty = [15; 10; 15; 15; 0];	bids.Q.prc = [-10; 0; 5; -20; 10];	lim.Q.max_offer = 50;	lim.Q.min_bid = -15;	[gen, gencost] = off2case(gen0, gencost0, offers, bids, lim);		gen1 = gen0;	gen1(:, [GEN_STATUS PMIN PMAX QMIN QMAX]) = [ ...		1	10	10	-15	10;		1	12	50	-10	10;		0	-30	0	-15	0;		1	12	25	0	30;		0	-30	0	0	7.5	];	t_is( gen, gen1, 8, [t ' - gen'] );		gencost1 = gencost0(:, 1:12);	gencost1(:, NCOST:(NCOST+8)) = [ ...		2	0	0	10	100	0	0	0	0;		3	0	0	20	500	50	2450	0	0;		4	-30	0	-20	1000	-10	2000	0	3000;		2	0	0	25	1250	0	0	0	0;		4	-30	0	-20	1000	-10	2000	0	3000;		4	-15	150	0	0	5	50	10	150;		3	-10	0	0	0	10	50	0	0;		3	-20	-15	-10	-10	0	0	0	0;		3	0	0	15	15	30	165	0	0;		2	0	0	0	0	0	0	0	0	];	t_is( gencost, gencost1, 8, [t ' - gencost'] );endt_end;return;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -