Hello Robin,
Attached is an example (overlapping_reserves_eg.m) that demonstrates such a
case and verifies the prices by perturbing each constraint. You can see how
the dispatches change (and consequently how the system cost is affected) as
the constraints are perturbed. This this explanation presented to me by
Prof. Zimmerman.
you can find all the discussion in:
<http://www.mail-archive.com/[email protected]/msg01356.html>
http://www.mail-archive.com/[email protected]/msg01356.html
Att.
Santiago
De: [email protected]
[mailto:[email protected]] En nombre de Naidoo,
Robin
Enviado el: jueves, 06 de octubre de 2011 9:31
Para: [email protected]
Asunto: LMP for Reserves
This message (and attachments) is subject to restrictions and a disclaimer.
Please refer to http://www.unisa.ac.za/disclaimer for full details.
_____
Good Day,
When performing an opf with reserves Matpower gives the LMP for reserves at
the generator buses. In the case where there is no congestion, the price
will be uniform at all buses. In the case where there is congestion on the
network , the prices will not be the same at all the buses. I need some
suggestion on how to obtain the prices at the non generator buses.
Thanks
Robin
opt = mpoption('OUT_BUS', 0, 'OUT_BRANCH', 0, 'OUT_ALL_LIM', 0, 'OUT_SYS_SUM',
0);
mpc = loadcase('t_case30_userfcns');
mpc.gencost(4, 6) = 7;
mpc = toggle_reserves(mpc, 'on');
mpc.reserves.zones = [ ...
1 1 1 0 0 0;
0 0 1 1 0 0;
0 0 0 1 1 1;
];
mpc.reserves.req = [51; 30; 29];
mpc.reserves.cost = [ ...
1;
1.2;
2;
3;
4;
2;
];
req0 = mpc.reserves.req;
r0 = runopf(mpc, opt);
pert = 0.1;
z = 1;
mpc.reserves.req = req0;
mpc.reserves.req(z) = mpc.reserves.req(z) + pert;
r1 = runopf(mpc, opt);
z = 2;
mpc.reserves.req = req0;
mpc.reserves.req(z) = mpc.reserves.req(z) + pert;
r2 = runopf(mpc, opt);
z = 3;
mpc.reserves.req = req0;
mpc.reserves.req(z) = mpc.reserves.req(z) + pert;
r3 = runopf(mpc, opt);
zone_1_prc = (r1.f - r0.f) / pert
zone_2_prc = (r2.f - r0.f) / pert
zone_3_prc = (r3.f - r0.f) / pert