lpopf

advertisement
EE/Econ 458
LPOPF
J. McCalley
1
LPOPF
The linear program optimal power flow is functionally equivalent
to the SCED (but not to the SC-SCED). The main difference is that
LPOPF uses DC power flow equations whereas SCED uses linear
sensitivities (generation shift factors).
Please read below papers posted to website for full description of
SC-SCUC and SC-SCED.
Ref: Xingwang Ma, Haili Song, Mingguo Hong, Jie Wan, Yonghong Chen, Eugene Zak, “The Security-constrained
Commitment and Dispatch For Midwest ISO Day-ahead Co-optimized Energy and Ancillary Service Market,”
Proc. of the 2009 IEEE PES General Meeting.
Ref: Xingwang Ma, Yonghong Chen, Jie Wan, “Midwest ISO Co-optimization Based Real-time Dispatch and
Pricing of Energy and Ancillary Services,” Proc. of the 2009 IEEE PES General Meeting.
2
Linearized cost rate curves
In our simplest version, we assume that only generators supply
offers and all load is “must serve.”
We assume we have linearized cost-rate (generation offer) curves
into some number of price-quantity offers.
The below illustrates this linearization to either three offers or one.
Three offers: (si1,Pi1), (si2, Pi2), (si3, Pi3)
Ci
$/hr
si3
si
One offer: (si,Pi),)
si2
si1
Pi1
Pi,min
Pi2
Pi3
Pi (MW) 
3
LPOPF
min
s P 
k gk
k generator _ buses
Subject to:
P  B' 
P B  ( D  A)  
 PB,max  PB  PB,max
0  Pgk  Pgk ,max , k gen_ buses
where:
Pk  Pgk  Pdk , k  1,...N
Do not delete a column and row in DC power
flow equations to use the “reduced” set. If
you do, you are relieving the problem of
satisfying power balance:
P1+P2+P3+P4=0
You can see that the above is imposed by the
“full” DC power flow equations by summing
the rows.
 P1   30  10  10  10 1 
 P   10 20  10 0   
 2  
 2 
 P3   10  10 30  10  3 
  
 
 10 20   4 
 P4   10 0
Alternatively, you can use the “reduced” DC
power flow equations together with the
above power balance constraint, which, for
the example on the next slide, is
Pg1+Pg2+Pg3=2.1787
4
Example
,
Pg2
Pg1
1
2
y12 =-j10
y14 =-j10
y13 =-j10
Pd2=1pu
y34 =-j10
4
Pg4
3
Pd3=1.1787pu
K1 (Pg1 )  s1Pg1
K2 ( Pg 2 )  s2 Pg 2
37.5  Pg 2  150
K 4 (Pg 4 )  s4 Pg 4
45  Pg 4  180
s1=13.07 $/MWhr
s2=12.11 $/MWhr
s4=12.54 $/MWhr
y23 =-j10
50  Pg1  200
s1=1307 $/puMWhr
s2=1211 $/puMWhr
s4=1254 $/puMWhr
Objective function:
Z  1307Pg1 1211Pg 2 1254Pg 4
5
Example
DC power flow equality constraints:
,
 P  B'  0
From last time:
 P1   30  10  10  10 1 
 P   10 20  10 0   
 2  
 2 
 P3   10  10 30  10  3 
  
 
 10 20   4 
 P4   10 0
where
Putting the equations into CPLEX constraint
form (variables on left, constant on RHS):
But Pg3, Pd1, Pd2, Pd3, Pd4 are fixed at
0,0,1, 1.1787, 0, so the above become:
Pg1  301  10 2  10 3  10 4
Pg1  301  10 2  10 3  10 4  0
Pg 2  1  101  20 2  10 3
 1.1787  101  10 2  30 3  10 4
Pg 4  101  10 3  20 4
P1  Pg1  Pd1
P2  Pg 2  Pd 2
P3  Pg 3  Pd 3
P4  Pg 4  Pd 4
Pg 2  101  20 2  10 3  1
101  10 2  30 3  10 4  1.1787
Pg 4  101  10 3  20 4  0
We need to write equations so that RHS values, if
they are or were to be non-zero, are or would be
6
positive, in order to get positive dual variables.
Example
These are not constraints on our problem. They just
Line flow equality constraints:
,
 PB  ( D  A)   0
From last time:
0
0
0
10 0
 0 10 0

0
0


D0
0 10 0
0


0
0
0
10
0


 0
0
0
0 10
compute for us the line flows which we then constrain
with inequalities. We could also do each of these as one
equation, using a single inequality constraint.
1
1

A  0

0
1
0
-1
1
0
0
- 1
0
0 
1 0 

1 1 
 1 0 
0
Note we need “full” nodearc incidence matrix
because we have full DC
power flow equations.
0
 10
 101  10 4 
10 0 0 0 0  1 0 0 - 1
10 0


1  




1

 1

0     101  10 2 
   0 10 0 0 0  1 - 1 0 0    10  10 0

( D  A)   2    0 0 10 0 0  0 1  1 0   2    0 10  10 0   2    10 2  10 3 
 3  


  3  
  3  
0
 10 10     10 3  10 4 
   0 0 0 10 0  0 0  1 1     0
 4  
 4  
 4   10  10 




0
0
0
0
10
1
0

1
0
10
0

10
0





1
3 

 Pb1   101  10 4  0
1 
 P   10  10  0
1
2 
 
 b2  
 
2






 P b  ( D  A) 
 0   Pb 3  10 2  10 3  0
 3 
  
  
P

10


10

 
3
4
 b4  
0 

 4
 Pb 5   101  10 3  0
 Pb1  101  10 4  0
 Pb 2  101  10 2  0
 Pb 3  10 2  10 3  0
 Pb 4  10 3  10 4  0
 Pb 5  101  10 3  0
7
Example
,
minimize:
Z  1307Pg1 1211Pg 2 1254Pg 4
Pg1  301  10 2  10 3  10 4  0
Pg 2  101  20 2  10 3  1
101  10 2  30 3  10 4  1.1787
 P  B'  0
Pg 4  101  10 3  20 4  0
 Pb1  101  10 4  0
 Pb 2  101  10 2  0
 Pb 3  10 2  10 3  0
 Pb 4  10 3  10 4  0
 PB  ( D  A)   0
 Pb 5  101  10 3  0
…and the inequality
constraints
 PB,max  PB  PB,max
0  Pgk  Pgk ,max , k generator_ buses
8
CPLEX Code
minimize
1307 pg1 + 1211 pg2 + 1254 pg4
subject to
I can arbitrarily set one angle to whatever I like (within
theta1=0
-pb1 + 10 theta1 - 10 theta4 = 0
since it is the angle differences that are important.
-pb2 + 10 theta1 - 10 theta2 = 0
-pb3 + 10 theta2 - 10 theta3 = 0
-pb4 - 10 theta3 + 10 theta4 = 0
-pb5 + 10 theta1 - 10 theta3 = 0
pg1 - 30 theta1 + 10 theta2 + 10 theta3 + 10 theta4 = 0
pg2 + 10 theta1 - 20 theta2 + 10 theta3 = 1
10 theta1 + 10 theta2 - 30 theta3 + 10 theta4 = 1.1787
pg4 + 10 theta1
+ 10 theta3 - 20 theta4 = 0
-pg1 <= -0.5
pg1 <= 2
-pg2 <= -0.375
pg2 <= 1.5
-pg4<= -0.45
pg4 <= 1.8
-pb1 <= 500
pb1 <= 500
-pb2 <= 500
pb2 <= 500
-pb3 <= 500
pb3 <= 500
-pb4 <= 500
pb4 <= 500
-pb5 <= 500
pb5 <= 500
Bounds
-500 <= pb1 <= 500
-500 <= pb2 <= 500
-500 <= pb3 <= 500
-500 <= pb4 <= 500
-500 <= pb5 <= 500
-3.14159 <= theta1 <= 3.14159
-3.14159 <= theta2 <= 3.14159
-3.14159 <= theta3 <= 3.14159
-3.14159 <= theta4 <= 3.14159
end
Objective
bounds),
Line flows
DC power flow equations
Generation offer constraints
Line flow constraints
CPLEX only provides dual variables for
equalities and inequalities that appear
in the constraint list and not the
“bounds” list, i.e., it does not provide
dual variables for inequalities in the
“bounds” list. If the exact same
constraints are imposed both places,
CPLEX will not provide a dual variable.
If you do not explicitly define a bound on a variable, then CPLEX
applies bounds of 0 to ∞, and so if you want negativity for a
variable, you must impose that here.
9
Solution
Z*=$2705.7557
display solution variables –
Variable Name
Solution Value
pg1
0.500000
pg2
1.228700
1
pg4
0.450000
PB1 =
pb1
-0.015163
-0.0152
theta4
0.001516
pb2
0.095487
4
theta2
-0.009549
pb3
0.324188
theta3
-0.041968
pb4
0.434838
pb5
0.419675
All other variables in the range 1-12 are 0.
Pg2=1.2287pu
Pg1=0.5pu
2
PB2=0.0955
PB5=0.4197
Pd2=1pu
PB4 =
0.4348
Pg4=0.45pu
PB3
=0.3242
3
Pd3=1.1787pu
There are 11 variables listed as non-0.
So which variable is 0? Why?
10
display solution dual Constraint Name Dual Price
c7
1211.000000
c8
1211.000000
c9
1211.000000
c10
1211.000000
c11
-96.000000
c15
-43.000000
All other dual prices in the
range 1-26 are 0.
Solution ($/per unit-hr)
Equality constraints
Equation
Value
PB1
0.0000
PB2
0.0000
PB3
0.0000
PB4
0.0000
PB5
0.0000
P1
1211.0
P2
1211.0
P3
1211.0
P4
1211.0
Lower bounds
Variable
value
Pg1
-96.0000
Pg2
0
Pg4
-43.0000
PB1
0
PB2
0
PB3
0
PB4
0
PB5
0
Upper bounds
variable
value
Pg1
0.0000
Pg2
0.0000
Pg4
0.0000
PB1
0.0000
PB2
0.0000
PB3
0.0000
PB4
0.0000
PB5
0.0000
The dual variables tell us how much the objective changes when the right-hand-side of the
corresponding constraint increases by a unit (subject to qualifications on next slide). Since we
are in “per unit”, and a “per-unit” is 100 MW, dividing the dual variables by 100 gives the
corresponding $/MW change in the objective function. So dual variables for
• c7-c10 are$12.11/MWhr  Increasing load by 1 MW at either of buses 1,2,3, or 4 increases
objective by $12.11. This is set by the bus 2 generator, as it will respond to any load change.
• c11 is -$0.96/MWhr  This constraint is –pg1<=-0.5. Increasing RHS from -0.5 to -0.49,
equivalent to decreasing lower bound on pg1 from 50 to 49 MW, reduces objective by $0.96 .
• c15 is -$0.43/MWhr  This constraint is –pg4 <= -0.45. Increasing RHS from -0.45 to -0.44,
equivalent to decreasing lower bound on pg4 from 45 to 44 MW, reduces objective by $0.43.
11
Qualification to dual variable definition
From last slide:
“The dual variables tell us how much the objective changes when the right-hand-side of the
corresponding constraint increases by a unit (subject to qualifications…).”
F *
i 
bi
This says that the λi = ΔF*/Δbi only for incrementally small Δbi.
In fact, it is more restrictive than that.
In an LP, λi = ΔF*/Δbi holds only for Δbi such that within
bi+ Δbi (inclusive), no change in the active constraint set occurs.
For example,
• if constraint i is active (inactive) at bi, and it becomes
inactive (active) within bi+ Δbi, then λi = ΔF*/Δbi will not hold
within bi+ Δbi.
• if constraint k is active (inactive) at bi, and it becomes
inactive (active) within bi+ Δbi, then λi = ΔF*/Δbi will not hold
within bi+ Δbi.
Note: Be careful in HW#6, problem 2, parts 2-c (v) and 2-c (vi).
12
minimize
1307 pg1 + 1211 pg2 + 1254 pg4
subject to
theta1=0
-pb1 + 10 theta1 - 10 theta4 = 0
-pb2 + 10 theta1 - 10 theta2 = 0
-pb3 + 10 theta2 - 10 theta3 = 0
-pb4 - 10 theta3 + 10 theta4 = 0
-pb5 + 10 theta1 - 10 theta3 = 0
pg1 - 30 theta1 + 10 theta2 + 10 theta3 + 10 theta4 = 0
pg2 + 10 theta1 - 20 theta2 + 10 theta3 = 1.01
10 theta1 + 10 theta2 - 30 theta3 + 10 theta4 = 1.1787
pg4 + 10 theta1
+ 10 theta3 - 20 theta4 = 0
-pg1 <= -0.5
pg1 <= 2
-pg2 <= -0.375
pg2 <= 1.5
-pg4<= -0.45
pg4 <= 1.8
-pb1 <= 500
pb1 <= 500
-pb2 <= 500
pb2 <= 500
-pb3 <= 500
pb3 <= 500
-pb4 <= 500
pb4 <= 500
-pb5 <= 500
pb5 <= 500
Bounds
-500 <= pb1 <= 500
-500 <= pb2 <= 500
-500 <= pb3 <= 500
-500 <= pb4 <= 500
-500 <= pb5 <= 500
-3.14159 <= theta1 <= 3.14159
-3.14159 <= theta2 <= 3.14159
-3.14159 <= theta3 <= 3.14159
-3.14159 <= theta4 <= 3.14159
end
Case 1
Change Pd2 from 1 to 1.01 (a 1 MW
increase) and resolve.
Solution provides:
Z*=$2717.8657
Previous solution was:
Z*=$2705.7557
2717.8657
-2705.7557
---------------12.11
13
Case 2a
Take a look at solution to original case:
Pg2=1.2287pu
Pg1=0.5pu
1
2
PB2=0.0955
PB1 =
-0.0152
4
PB5=0.4197
Pd2=1pu
PB4 =
0.4348
Pg4=0.45pu
PB3
=0.3242
3
Pd3=1.1787pu
Let’s constrain Pb3 to 0.3. This means that upper and lower bounds of Pb3 should be
changed from (-500,500) to (-0.3,0.3).
We will, however, only do this in the “constraint” section.
Having it in the “constraint” section will ensure when it binds, we will get a dual variable.
But we will keep the (-500,500) in the “bounds” section in order to prevent CPLEX from
imposing non-negativity.
So the new CPLEX code is as follows:
14
minimize
1307 pg1 + 1211 pg2 + 1254 pg4
subject to
theta1=0
-pb1 + 10 theta1 - 10 theta4 = 0
-pb2 + 10 theta1 - 10 theta2 = 0
-pb3 + 10 theta2 - 10 theta3 = 0
-pb4 - 10 theta3 + 10 theta4 = 0
-pb5 + 10 theta1 - 10 theta3 = 0
pg1 - 30 theta1 + 10 theta2 + 10 theta3 + 10 theta4 = 0
pg2 + 10 theta1 - 20 theta2 + 10 theta3 = 1.0
10 theta1 + 10 theta2 - 30 theta3 + 10 theta4 = 1.1787
pg4 + 10 theta1
+ 10 theta3 - 20 theta4 = 0
-pg1 <= -0.5
pg1 <= 2
-pg2 <= -0.375
pg2 <= 1.5
-pg4<= -0.45
pg4 <= 1.8
-pb1 <= 500
pb1 <= 500
-pb2 <= 500
pb2 <= 500
-pb3 <= 0.3
pb3 <= 0.3
-pb4 <= 500
pb4 <= 500
-pb5 <= 500
pb5 <= 500
Bounds
-500 <= pb1 <= 500
-500 <= pb2 <= 500
-500 <= pb3 <= 500
-500 <= pb4 <= 500
-500 <= pb5 <= 500
-3.14159 <= theta1 <= 3.14159
-3.14159 <= theta2 <= 3.14159
-3.14159 <= theta3 <= 3.14159
-3.14159 <= theta4 <= 3.14159
end
Change Pb3 constraint from
(-500,500) to (-0.3, 0.3) and
resolve.
Case 2a
Solution provides:
Z*=$2707.8358
Previous solution was:
Z*=$2705.7557
15
Case 2a
Z*=$2707.8358
display solution variables –
Variable Name
Solution Value
pg1
0.500000
pg2
1.180325
pg4
0.498375
pb1
-0.039350
theta4
0.003935
pb2
0.119675
theta2
-0.011968
pb3
0.300000
theta3
-0.041968
pb4
0.459025
pb5
0.419675
All other variables in the range 1-12 are 0.
Old solution
Pg2=1.2287pu
Pg1=0.5pu
1
2
PB2=0.0955
PB1 =
-0.0152
PB5=0.4197
Pd2=1pu
PB4 =
0.4348
4
PB3
=0.3242
3
Pg4=0.45pu
Pd3=1.1787pu
New solution
Pg2=1.1803pu
Pg1=0.5pu
1
In comparing the two solutions, we observe
PB1 =
• flow on branch 3 is constrained to 0.3
-0.0393
• flows all over the network have changed.
• gen levels at buses 2 and 4 have changed.
4
Activation of a transmission constraint has
changed the dispatch. This will affect the
energy prices!
2
PB2=0.1197
PB5=0.4197
PB3 =0.3
Pd2=1pu
PB4 =
0.4590
Pg4=0.4984pu
3
Pd3=1.1787pu
16
display solution dual Constraint Name Dual Price
c4
-86.000000
c7
1243.250000
c8
1211.000000
c9
1264.750000
c10
1254.000000
c11
-63.750000
c22
-86.000000
All other dual prices in the range
1-26 are 0.
($/per unit-hr)
Equality constraints
Equation
Value
PB1
0.0000
PB2
0.0000
PB3
-86.000
PB4
0.0000
PB5
0.0000
P1
1243.25
P2
1211.00
P3
1264.75
P4
1254.00
Case 2a
Lower bounds
Variable
value
Pg1
-63.750
Pg2
0.0000
Pg4
0.0000
PB1
0.0000
PB2
0.0000
PB3
0.0000
PB4
0.0000
PB5
0.0000
θ1
0.0000
θ2
0.0000
θ3
0.0000
θ4
0.0000
Upper bounds
variable
value
Pg1
0.0000
Pg2
0.0000
Pg4
0.0000
PB1
0.0000
PB2
0.0000
PB3
-86.000
PB4
0.0000
PB5
0.0000
θ1
0.0000
θ2
0.0000
θ3
0.0000
θ4
0.0000
Generation limits: We still see a non-0 dual variable (DV) on Pg1 lower limit, but the DV on the
Pg4 lower limit has become 0, reflecting that Pg4 had to increase and come off of its lower limit to
compensate for the decrease in Pg2 necessary to redispatch around the PB3 constraint.
Branch limits: The DV on the PB3 upper bound is -86, and after dividing by 100 to change from
per-unit to MW, it is -0.86 $/MW-hr, reflecting the increase in objective function that can be
obtained from increasing the PB3 branch limit by 1 MW (from 0.30 per-unit to 0.31 per-unit).
Recall the original case had PB3 flow at 0.324188. If we increase the PB3 branch limit in Case 2a to
0.324188, then we should see the objective increase by (.324188-.3)*-86=-2.0802. Our Case 2a
objective is $2707.8358; objective of original problem is $2705.7557, reduced by $2.0801.
17
display solution dual Constraint Name Dual Price
c4
-86.000000
c7
1243.250000
c8
1211.000000
c9
1264.750000
c10
1254.000000
c11
-63.750000
c22
-86.000000
All other dual prices in the range
1-26 are 0.
($/per unit-hr)
Equality constraints
Equation
Value
PB1
0.0000
PB2
0.0000
PB3
-86.000
PB4
0.0000
PB5
0.0000
P1
1243.25
P2
1211.00
P3
1264.75
P4
1254.00
Case 2a
Lower bounds
Variable
value
Pg1
-63.750
Pg2
0.0000
Pg4
0.0000
PB1
0.0000
PB2
0.0000
PB3
0.0000
PB4
0.0000
PB5
0.0000
θ1
0.0000
θ2
0.0000
θ3
0.0000
θ4
0.0000
Upper bounds
variable
value
Pg1
0.0000
Pg2
0.0000
Pg4
0.0000
PB1
0.0000
PB2
0.0000
PB3
-86.000
PB4
0.0000
PB5
0.0000
θ1
0.0000
θ2
0.0000
θ3
0.0000
θ4
0.0000
Nodal prices: The DVs on the equality constraints corresponding to the 4 nodes are the nodal
prices. Without transmission constraints, these prices were all the same, at 12.11 $/MW-hr, a
price set entirely by the generator at bus 2 since it was the bus 2 generator that responded to
any load change. But now they are all different, with only bus 2 price at 12.11 $/MW-hr. This
difference reflects that, because of the transmission constraint, a load increase at one bus will
incur a different cost than a load increase at another bus.
18
Case 2b
Let’s increase the load at the highest price bus, bus #3, from 1.1787 to 1.1887 per unit, an
increase of 1 MW. Resulting dispatch/flows are below, together with the Case 2a dispatch/flows.
Case 2b flows/dispatch
Case 2a flows/dispatch
(PB3 constrained, Pd2=1.1887)
(PB3 constrained, Pd2=1.1787)
Pg2=1.1803pu
Pg1=0.5pu
1
2
4
PB5=0.4197
PB3 =0.3
Pd2=1pu
PB4 =
0.4590
1
2
PB2=0.1222
PB2=0.1197
PB1 =
-0.0393
Pg2=1.1778pu
Pg1=0.5pu
PB1 =
-0.0443
4
3
PB5=0.4222
Pd2=1pu
PB4 =
0.4665
Pg4=0.5109pu
Pg4=0.4984pu
PB3 =0.3
3
Pd3=1.1887pu
Pd3=1.1787pu
To supply an additional MW at bus 3, the generation levels of 2 different units had to be
modified. Specifically, Pg2 was decreased from 1.1803 to 1.1778, a decrease of 0.0025 pu (0.25
MW). Pg4 was increased from 0.4984 pu to 0.5109 pu, an increase of 0.0125 pu (1.25 MW).
Thus, Pg4 was increased enough to supply the increased load at bus 3 and the decreased gen at
bus 2.
Question: Why did we not just increase Unit 2 or increase Unit 4 by 1 MW?
19
Case 2b
Case 2b flows/dispatch
(PB3 constrained, Pd2=1.1887)
Case 2a flows/dispatch
(PB3 constrained, Pd2=1.1787)
Pg2=1.1803pu
Pg1=0.5pu
1
2
4
PB5=0.4197
PB3 =0.3
Pd2=1pu
PB4 =
0.4590
1
2
PB2=0.1222
PB2=0.1197
PB1 =
-0.0393
Pg2=1.1778pu
Pg1=0.5pu
PB1 =
-0.0443
4
3
PB5=0.4222
Pd2=1pu
PB4 =
0.4665
Pg4=0.5109pu
Pg4=0.4984pu
PB3 =0.3
3
Pd3=1.1887pu
Pd3=1.1787pu
Answer: Because the resulting flow on branch 3 would exceed its capacity!!!
In fact, it is not possible to supply additional load at bus 3 with only a single unit increase. We
will always have to compensate for the load AND redispatch to compensate for the additional
flow on the branch 3. As a result, the nodal price at bus 3 is a function of the generation costs at
those buses that are used in the particular redispatch that achieves the minimum cost.
20
Case 2b
Case 2b flows/dispatch
(PB3 constrained, Pd2=1.1887)
Case 2a flows/dispatch
(PB3 constrained, Pd2=1.1787)
Pg2=1.1803pu
Pg1=0.5pu
1
2
4
PB5=0.4197
PB3 =0.3
Pd2=1pu
PB4 =
0.4590
1
2
PB2=0.1222
PB2=0.1197
PB1 =
-0.0393
Pg2=1.1778pu
Pg1=0.5pu
PB1 =
-0.0443
4
3
PB5=0.4222
Pd2=1pu
PB4 =
0.4665
Pg4=0.5109pu
Pg4=0.4984pu
PB3 =0.3
3
Pd3=1.1887pu
Pd3=1.1787pu
Answer: Because the resulting flow on branch 3 would exceed its capacity!!!
In fact, it is not possible to supply additional load at bus 3 with only a single unit increase. We
will always have to compensate for the load AND redispatch to compensate for the additional
flow on the branch 3. As a result, the nodal price at bus 3 is a function of the generation costs at
those buses that are used in the particular redispatch that achieves the minimum cost.
21
Demand bidding
Dr. Tesfatsion has told you that a market is efficient if traders extract the
maximum total net surplus (yellow area in below curve).
So we want to solve this problem:


max 
vk ( Pk ) 

Pk , Pj  kLoadBuses



C
(
P
)
 k j

jGenBuses

Subject to constraints…..
where vk and Ck represent the bids and
offers of the load serving entities
(LSEs) and generation owners,
respectively. :
22
Demand bidding
Dr. Tesfatsion has told you that a market is efficient if traders extract the
maximum total net surplus (yellow area in below curve).
So we want to solve this problem:




max 
v
(
P
)

C
(
P
)
k k
 k j
P , P  kLoadBuses

jGenBuses


k
j
Subject to constraints…..
where vk and Ck represent the bids &
offers of the load serving entities (LSEs)
and generation owners, respectively.
Equivalently, we may use the following
objective function in above problem:


min   Ck ( Pj )   vk ( Pk )
Pk , Pj
kLoadBuses 
 jGenBuses

23
Demand bidding
Linearizing both objective functions results in the following problem:
min
s
P 
gk gk
kgenerator _ buses 
  s
kload _ buses
dk
Pdk
subject to
P  B' 
P B  ( D  A)  
 PB,max  PB  PB,max
0  Pgk  Pgk ,max , k gen_ buses
0  Pdk  Pdk, max , k  load _ buses
Pk  Pgk  Pdk , k  1,...N
24
Example with demand bidding
,
Pg2
Pg1
1
2
y12 =-j10
y14 =-j10
y13 =-j10
Pd2=1pu
y23 =-j10
y34 =-j10
4
Pg4
3
Pd3=1.1787pu
K1 ( Pg1 )  s1Pg1
K2 ( Pg 2 )  s2 Pg 2
.375 Pg 2  1.50
K 4 (Pg 4 )  s4 Pg 4
.45  Pg 4  1.8
.50  Pg1  2
v2 ( Pd 2 )  sd 2 Pd 2
v3 ( Pd 3 )  sd 3 Pd 3
s1=13.07 $/MWhr
s2=12.11 $/MWhr
s4=12.54 $/MWhr
s1=1307 $/puMWhr
s2=1211 $/puMWhr
s4=1254 $/puMWhr
sd2=13.00 $/MWhr
sd3=12.00 $/MWhr
sd2=1300 $/puMWhr
sd3=1200 $/puMWhr
1.00<Pd2<2.00
2.00<Pd3<3.00
Objective function:
Z  1307Pg1  1211Pg 2  1254Pg 4
 1300Pd 2  1200Pd 3
25
Example with demand bidding
DC power flow equality constraints:
,
 P  B'  0
From last time:
 P1   30  10  10  10 1 
 P   10 20  10 0   
 2  
 2 
 P3   10  10 30  10  3 
  
 
 10 20   4 
 P4   10 0
where
Here Pg3, Pd1, Pd4 are fixed at 0,0,0, so
the above become:
Pg1  301  10 2  10 3  10 4
Pg 2  Pd 2  101  20 2  10 3
 Pd 3  101  10 2  30 3  10 4
Pg 4  101  10 3  20 4
P1  Pg1  Pd1
P2  Pg 2  Pd 2
P3  Pg 3  Pd 3
P4  Pg 4  Pd 4
Putting the equations into CPLEX constraint
form (variables on left, constant on RHS):
Pg1  301  10 2  10 3  10 4  0
Pg 2  Pd 2  101  20 2  10 3  0
 Pd 3  101  10 2  30 3  10 4  0
Pg 4  101  10 3  20 4  0
2
6
Example with demand bidding
Line flow equality constraints:
,
 PB  ( D  A)   0
This is exactly the same as in
the previous examples.
From last time:
0
0
0
10 0
 0 10 0

0
0


D0
0 10 0
0


0
0
0
10
0


 0
0
0
0 10
1
1

A  0

0
1
0
-1
1
0
0
- 1
0
0 
1 0 

1 1 
 1 0 
0
Note we need “full” nodearc incidence matrix
because we have full DC
power flow equations.
0
 10
 101  10 4 
10 0 0 0 0  1 0 0 - 1
10 0


1  




1

 1

0     101  10 2 
   0 10 0 0 0  1 - 1 0 0    10  10 0

( D  A)   2    0 0 10 0 0  0 1  1 0   2    0 10  10 0   2    10 2  10 3 
 3  


  3  
  3  
0
 10 10     10 3  10 4 
   0 0 0 10 0  0 0  1 1     0
 4  
 4  
 4   10  10 




0
0
0
0
10
1
0

1
0
10
0

10
0





1
3 

 Pb1   101  10 4  0
1 
 P   10  10  0
1
2 
 
 b2  
 
2






 P b  ( D  A) 
 0   Pb 3  10 2  10 3  0
 3 
  
  
P

10


10

 
3
4
 b4  
0 

 4
 Pb 5   101  10 3  0
 Pb1  101  10 4  0
 Pb 2  101  10 2  0
 Pb 3  10 2  10 3  0
 Pb 4  10 3  10 4  0
 Pb 5  101  10 3  0
2
7
Example with demand bidding
,
minimize:
Z  1307Pg1 1211Pg 2 1254Pg 4 1300Pd 2 1200Pd 3
Pg1  301  10 2  10 3  10 4  0
Pg 2  Pd 2  101  20 2  10 3  0
 Pd 3  101  10 2  30 3  10 4  0
 P  B'  0
Pg 4  101  10 3  20 4  0
 Pb1  101  10 4  0
 Pb 2  101  10 2  0
 Pb 3  10 2  10 3  0
 PB  ( D  A)   0
 Pb 4  10 3  10 4  0
 Pb 5  101  10 3  0
…and the inequality
constraints
 PB,max  PB  PB,max
0  Pgk  Pgk ,max , k gen_ buses
0  Pdk  Pdk, max , k  load _ buses
2
8
minimize
1307 pg1 + 1211 pg2 + 1254 pg4 - 1300 pd2 - 1200 pd3
subject to
theta1=0
-pb1 + 10 theta1 - 10 theta4 = 0
-pb2 + 10 theta1 - 10 theta2 = 0
-pb3 + 10 theta2 - 10 theta3 = 0
-pb4 - 10 theta3 + 10 theta4 = 0
-pb5 + 10 theta1 - 10 theta3 = 0
pg1
- 30 theta1 + 10 theta2 + 10 theta3 + 10 theta4 = 0
pg2 -pd2 + 10 theta1 - 20 theta2 + 10 theta3
=0
-pd3 + 10 theta1 + 10 theta2 - 30 theta3 + 10 theta4 = 0
pg4 + 10 theta1
+ 10 theta3 - 20 theta4 = 0
-pg1 <= -0.5
pg1 <= 2
-pg2 <= -0.375
pg2 <= 1.5
-pg4<= -0.45
pg4 <= 1.8
-pd2 <= -1
pd2 <= 2
-pd3 <= -2
pd3 <= 3
-pb1 <= 500
pb1 <= 500
-pb2 <= 500
pb2 <= 500
-pb3 <= 500
pb3 <= 500
-pb4 <= 500
pb4 <= 500
-pb5 <= 500
pb5 <= 500
Bounds
-500 <= pb1 <= 500
-500 <= pb2 <= 500
-500 <= pb3 <= 500
-500 <= pb4 <= 500
-500 <= pb5 <= 500
-3.14159 <= theta1 <= 3.14159
-3.14159 <= theta2 <= 3.14159
-3.14159 <= theta3 <= 3.14159
-3.14159 <= theta4 <= 3.14159
end
Objective
CPLEX Code
I can arbitrarily set one angle to whatever I like (within bounds),
since it is the angle differences that are important.
Line flows
DC power flow equations
Generation offer constraints
Load bid constraints
Line flow constraints
CPLEX only provides dual variables for
equalities and inequalities that appear
in the constraint list and not the
“bounds” list, i.e., it does not provide
dual variables for inequalities in the
“bounds” list. If the exact same
constraints are imposed both places,
CPLEX will not provide a dual variable.
If you do not explicitly define a bound on a variable, then CPLEX
applies bounds of 0 to ∞, and so if you want negativity for a
variable, you must impose that here.
2
9
Solution
Z*=-$12.80
This is negative of the social surplus .
So the social surplus (Total Utility of Load less Total Cost of Supply)
is $12.80. Not too much!
This is because the consumers are valuing the energy at just a little
above cost.
If we change the utility function coefficients to 1500 and 1400, from
1300 and 1200, respectively, social surplus changes to $904/hr.
If we change utility function coefficients to 1000 and 900,
respectively, social surplus would be -$924/hr,
indicating cost of supply is more than utility of consumption, and the
only reason any power is being consumed is the lower bound
constraints we have placed on generation and demand.
30
Solution
Z*=-$12.80
display solution variables –
Variable Name
Solution Value
pg1
0.500000
pg2
1.500000
1
pg4
1.800000
PB1 =
pd2
1.800000
-0.5875
pd3
2.000000
pb1
-0.587500
4
theta4
0.058750
pb2
0.462500
theta2
-0.046250
pb3
0.162500
theta3
-0.062500
pb4
1.212500
pb5
0.625000
All other variables in the range 1-14 are 0.
Pg2=1.5pu
Pg1=0.5pu
2
PB2=0.4625
PB5=0.625
Pd2=1.8pu
PB3
=0.1625
PB4 =
1.2125
Pg4=1.8pu
3
Pd3=2.0pu
31
Solution
display solution dual Constraint Name Dual Price
c7
1300.000000
c8
1300.000000
c9
1300.000000
c10
1300.000000
c11
-7.000000
c14
-89.000000
c16
-46.000000
c19
-100.000000
All other dual prices in the
range 1-30 are 0.
($/per unit-hr)
Equality constraints
Equation
Value
PB1
-0.0000
PB2
-0.0000
Lower bounds
Variable
value
Pg1
-7.0000
Pg2
0.0000
Upper bounds
variable
value
Pg1
0.0000
Pg2
-89.00
PB3
0.0000
Pg4
0.0000
Pg4
-46.00
PB4
PB5
P1
P2
P3
P4
0.0000
-0.0000
1300.0
1300.0
1300.0
1300.0
Pd2
Pd3
PB1
PB2
PB3
PB4
PB5
θ1
θ2
θ3
θ4
0.0000
-100.00
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
Pd2
Pd2
PB1
PB2
PB3
PB4
PB5
θ1
θ2
θ3
θ4
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
• c7-c10 are$13.00/MWhr  Increasing load by 1 MW at any bus 1,2,3, or 4 increases
objective by $13.00. This is set by the bus 2 load, Pd2, as it will respond to any MW change.
• There is only one unconstrained decision variable, Pd2, and it is the variable that is setting the
nodal price ($13.00/MWhr). We say that Pd2 is a “regulating” or “marginal” unit.
32
Solution
sg2=1211 $/pu-hr
sg4=1254 $/pu-hr
sg1=1307 $/pu-hr
sd2=1300 $/pu-hr
sd3=1200 $/pu-hr
.50  Pg1  2
.375 Pg 2  1.50
1.00<Pd2<2.00
2.00<Pd3<3.00
.45  Pg 4  1.8
Think of algorithm like this:
1. Initialize: Set gen and load at lower limits. At least one variable must come off its lower
bound to provide power balance.
Sum of load lower bounds is 3; Sum of gen lower bounds is 1.325, one or more of the gens
must come off their lower bounds by 1.675 pu in order to provide a feasible solution. This
gen will be the one with the least offer.
• Pg2 is least expensive and it comes off its lower bound first but can only supply up to
1.125 pu additional generation. We need 1.675 pu.
• So Pg2 gets pushed to its limit.
• Pg4 as next least-offer gen then comes off its lower limit of .45 and provides an
additional amount equal to 1.675-1.125=.55, so that Pg4 is now generating at .45+.55=1.
• At this point, the total generation is .375+1.125+.45+.55+.5=3; solution is feasible.
Pg2
Pg4
Pg1
So Pg4=1 and has 0.8 left at 12.54, Pd2=1, with 1.0 left at 13.00. Because 13.00>12.54,
there is still surplus to be obtained!
33
Solution
sg2=1211 $/pu-hr
sg4=1254 $/pu-hr
sg1=1307 $/pu-hr
sd2=1300 $/pu-hr
sd3=1200 $/pu-hr
.50  Pg1  2
.375 Pg 2  1.50
1.00<Pd2<2.00
2.00<Pd3<3.00
.45  Pg 4  1.8
2. Maximally increase surplus: Then it takes 1 MW (.01 pu) of supply and 1 MW (.01 pu) of
demand from the gen/load pair not at upper bounds which provides the most positive
surplus per MW. This will be the gen with the least cost and the load with the greatest
utility, as long as surplus is positive. Repeat this until you hit limit (then switch) or surplus
goes negative (then stop).
• G4 goes to 1.8 and D2 goes to 1.8.
• Now G4 is at limit and so we switch to G1 at 13.07, while D2 is at 13.00.
• If we take a MW from this pair, the surplus will decrease!
• STOP!
34
minimize
1307 pg1 + 1211 pg2 + 1254 pg4 - 1300 pd2 - 1200 pd3
subject to
theta1=0
-pb1 + 10 theta1 - 10 theta4 = 0
-pb2 + 10 theta1 - 10 theta2 = 0
-pb3 + 10 theta2 - 10 theta3 = 0
-pb4 - 10 theta3 + 10 theta4 = 0
-pb5 + 10 theta1 - 10 theta3 = 0
pg1
- 30 theta1 + 10 theta2 + 10 theta3 + 10 theta4 = 0
pg2 -pd2 + 10 theta1 - 20 theta2 + 10 theta3
=0
-pd3 + 10 theta1 + 10 theta2 - 30 theta3 + 10 theta4 = 0
pg4 + 10 theta1
+ 10 theta3 - 20 theta4 = 0
-pg1 <= -0.5
pg1 <= 2
-pg2 <= -0.375
pg2 <= 1.5
-pg4<= -0.45
pg4 <= 1.8
-pd2 <= -1
pd2 <= 2
-pd3 <= -2
pd3 <= 3
-pb1 <= 500
pb1 <= 500
-pb2 <= 500
pb2 <= 500
-pb3 <= 500
pb3 <= 0.16
-pb4 <= 0.16
pb4 <= 500
-pb5 <= 500
pb5 <= 500
Bounds
-500 <= pb1 <= 500
-500 <= pb2 <= 500
-500 <= pb3 <= 500
-500 <= pb4 <= 500
-500 <= pb5 <= 500
-3.14159 <= theta1 <= 3.14159
-3.14159 <= theta2 <= 3.14159
-3.14159 <= theta3 <= 3.14159
-3.14159 <= theta4 <= 3.14159
end
Demand bidding
with constrained
transmission
Previous solution, unconstrained transmission
had Pb3=0.1625, so we constrain Pb3 to 0.16.
Solution
Z*=-$12.7533
display solution variables Variable Name
Solution Value
pg1
0.506667
pg2
1.500000
pg4
1.800000
pd2
1.806667
pd3
2.000000
pb1
-0.586667
theta4
0.058667
pb2
0.466667
theta2
-0.046667
pb3
0.160000
theta3
-0.062667
pb4
1.213333
pb5
0.626667
All other variables in the range 1-14 are 0.
Pg2=1.5pu
Pg1=0.5067
pu
1
2
PB2=0.4667
PB1 =
-0.5867
PB5=0.6267
PB3 =0.16
Pd2=1.8067pu
PB4 =
1.2133
4
Pg4=1.8pu
3
Pd3=2.0pu
36
Solution
display solution dual Constraint Name Dual Price
c1
-0.000000
c4
-18.666667
c7
1307.000000
c8
1300.000000
c9
1311.666667
c10
1309.333333
c14
-89.000000
c16
-55.333333
c19
-111.666667
c26
-18.666667
All other dual prices in the range
1-30 are 0.
($/per unit-hr)
Equality constraints
Equation
Value
PB1
-0.0000
PB2
0.0000
PB3
-18.6667
PB4
0.0000
PB5
0.0000
P1
1307.0
P2
P3
P4
1300.0
1311.667
1309.333
Lower bounds
Variable
value
Pg1
0.0000
Pg2
0.0000
Pg4
0.0000
Pd2
0.0000
Pd3
- 111.667
PB1
0.0000
PB2
PB3
PB4
PB5
θ1
θ2
θ3
θ4
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
Upper bounds
variable
value
Pg1
0.0000
Pg2
-89.0000
Pg4
-55.3333
Pd2
0.0000
Pd3
0.0000
PB1
0.0000
PB2
PB3
PB4
PB5
θ1
θ2
θ3
θ4
0.0000
-18.6667
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
37
Demand bidding w/ constrained transmission
Previous solution, unconstrained transmission, New solution, with constrained transmission.
so we constrain Pb3 to 0.16.
Pg1=0.5pu
1
1
2
PB5=0.6250
Pd2=1.8pu
PB3
=0.1625
PB1 =
-0.5867
3
4
PB4 =
1.2125
4
Pg4=1.8pu
Equality constraints
Equation
Value
PB1
-0.0000
PB2
0.0000
PB3
0.0187
PB4
0.0000
PB5
0.0000
P1
1307.0
P2
P3
P4
1300.0
1311.7
1309.3
2
PB2 =0.4667
PB2=0.4625
PB1 =
-0.5875
Pg2 =1.5pu
Pg1 =0.5067
pu
Pg2=1.5pu
PB2
PB3
PB4
PB5
θ1
θ2
θ3
θ
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
Pd2 =1.8067pu
PB4 =
1.2133
Pg4 =1.8pu
Pd3=2.0pu
Lower bounds
Variable
value
Pg1
0.0000
Pg2
0.0000
Pg4
0.0000
Pd2
0.0000
Pd3
111.6667
PB1
0.0000
PB5 =0.6250
PB3 =0.16
Upper bounds
variable
value
Pg1
0.0000
Pg2
-89.0000
Pg4
-55.3333
Pd2
0.0000
Pd3
0.0000
PB1
0.0000
PB2
PB3
PB4
PB5
θ1
θ2
θ3
θ
0.0000
-18.6667
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
3
Pd3 =2.0pu
Observe! There are two
regulating buses this time.
RULE: For n binding constraints,
there are at least n+1 marginal
(regulating) buses.
The LMP at a marginal bus is
always equal to its offer or bid.
sg2=1211 $/pu-hr
sg4=1254 $/pu-hr
sg1=1307 $/pu-hr
sd2=1300 $/pu-hr
sd3=1200 $/pu-hr
38
Settlement without congestion (fixed demand)
Original solution, ∞ transmission
Equality constraints
Value
Objective function: Z*=2705.8 $/hr. Equation
PB1
0.0000
P =1.2287pu
P =0.5pu
PB2
0.0000
PB3
0.0000
1
2
PB4
0.0000
P =0.0955
P
P =
PB5
0.0000
=0.3242
P =0.4197
P =1pu
-0.0152
P1
1211.0
P =
P2
1211.0
4
3
0.4348
P3
1211.0
P =0.45pu
P =1.1787pu
P4
1211.0
g2
g1
B2
B3
B1
B5
d2
B4
g4
d3
Amount paid to generators:
Lower bounds
Variable
value
Pg1
96.0000
Pg2
0
Pg4
43.0000
PB1
0
PB2
0
PB3
0
PB4
0
PB5
0
θ1
0
θ2
0
θ3
0
θ4
0
Paymentg1  Pg1  LMP1  50MW 12.11$ / MWhr  605.50$ / hr
Paymentg 2  Pg 2  LMP2  122.87MW 12.11$ / MWhr  1487.96$ / hr
Paymentg 4  Pg 4  LMP4  45MW 12.11$ / MWhr  544.95$ / hr
Amount paid by loads:
Paymentd 2  Pd 2  LMP2  100MW 12.11$ / MWhr  1211.00$ / hr
Paymentd 3  Pd 3  LMP2  117.87MW 12.11$ / MWhr  1427.41$ / hr
Market settles with total payment
to gens equaling total payment to loads.
Upper bounds
variable
value
Pg1
0.0000
Pg2
0.0000
Pg4
0.0000
PB1
0.0000
PB2
0.0000
PB3
0.0000
PB4
0.0000
PB5
0.0000
θ1
0.0000
θ2
0.0000
θ3
0.0000
θ4
0.0000
Total payments to gens:
605.50+1487.96+544.95
=2638.41$/hr.
Total payments by loads:
1211.00+1427.41
=2638.41$/hr,
Question: Why does total payments to gens (or total
payments by loads) not equal Z*=2705.8$/hr? 39
Settlement without congestion (fixed demand)
Question: Why does total payments to gens (or
total payments by loads) not equal Z*=2705.8$/hr?
Answer: We optimize on the offers. We settle at LMPs.
Offers:
sg2=1211 $/pu-hr
sg4=1254 $/pu-hr
sg1=1307 $/pu-hr
To illustrate, let’s see what happens if we settle at offers
Paymentg1  Pg1  s1  50MW 13.07$ / MWhr  653.50$ / hr
Paymentg 2  Pg 2  s2  122.87MW 12.11$ / MWhr  1487.96$ / hr
Paymentg 4  Pg 4  s4  45MW 12.54$ / MWhr  564.30$ / hr
So why do we settle at the LMPs rather than the offers?
According to the paper I placed on the web page:
Total payments to gens will be
653.50+1487.96+564.30
=2705.76$/hr,
J. Yan, G. Stern, P. Luh, and F. Zhao,
“Payment versus bid cost,” IEEE Power
and Energy Magazine, March/April 2008.
“The primary reason for this conclusion is that under the pay-as-bid settlement scheme,
market participants would bid substantially higher than their marginal costs (since there is no
incentive for participants to bid their operating cost) to try to increase their revenue and,
thus, offset and very likely exceed the expected consumer payment reduction. As a result,
currently all ISOs in the United States adopt the pay-at-MCP principle.”
• A pay-as-bid settlement scheme incentivizes participants to bid high since the bid is what
they will be paid if their bid is accepted. The disincentive to bidding high is that their bid
might not be accepted.
• A pay-at LMP settlement scheme provides no incentive to bid high. The disincentive to
bid high because their bid might not be accepted remains.
Settlement with congestion (fixed demand)
g2
Pg1=0.5pu
1
PB2=0.1197
PB1 =
-0.0393
4
Equality constraints
Equation
Value
PB1
0.0000
P =1.1803pu
PB2
0.0000
PB3
-86.000
2
PB4
0.0000
P =0.3
PB5
0.0000
=1pu
P1
1243.25
P2
1211.00
3
P3
1264.75
P =1.1787pu
P4
1254.00
B3
PB5=0.4197
Pd2
PB4 =
0.4590
Pg4=0.4984pu
d3
Z*=$2707.8358
Amount paid to generators:
Lower bounds
Variable
value
Pg1
-63.750
Pg2
0.0000
Pg4
0.0000
PB1
0.0000
PB2
0.0000
PB3
0.0000
PB4
0.0000
PB5
0.0000
θ1
0.0000
θ2
0.0000
θ3
0.0000
θ4
0.0000
Paymentg1  Pg1  LMP1  50MW 12.432$ / MWhr  621.60$ / hr
Paymentg 2  Pg 2  LMP2  118.03MW 12.11$ / MWhr  1429.34$ / hr
Paymentg 4  Pg 4  LMP4  49.84MW 12.54$ / MWhr  624.99$ / hr
Amount paid by loads:
Paymentd 2  Pd 2  LMP2  100MW 12.11$ / MWhr  1211.00$ / hr
Paymentd 3  Pd 3  LMP2  117.87MW 12.647$ / MWhr  1490.70$ / hr
Amount paid by loads exceeds that
paid to the gens by $25.77. Why is this?
Upper bounds
variable
value
Pg1
0.0000
Pg2
0.0000
Pg4
0.0000
PB1
0.0000
PB2
0.0000
PB3
-86.000
PB4
0.0000
PB5
0.0000
θ1
0.0000
θ2
0.0000
θ3
0.0000
θ4
0.0000
Total payments to gens:
621.60+1429.34+624.99
=2675.93$/hr.
Total payments by loads:
1211.00+1490.70
=2701.70$/hr,
41
Settlement with congestion (fixed demand)
Why does amount paid by loads exceed that paid to the gens by $25.77?
Consider under the condition of no losses, the power balance equation:
n
n
 P  P
j 1
gj
j 1
dj
Now what if there is no congestion and prices at all buses are the same at LMP, i.e., LMPj=LMP
for all buses j=1,…,n. In this case:
n
n
n
LMP Pgj LMP Pdj
j 1
n
 LMP P  LMP P
j 1
j 1
j
gj
j 1
j dj
And we have just proved that for the case without congestion, when all LMPs are the same,
the amount paid by loads equals the amount paid to the generators.
But when all LMPs are not the same (when we have congestion), the above proof does not
hold. In this case, we can show that (see notes):
M
CC    j Pbj 
j 1
 LMPj * Pdk   LMPk * Pgk
kload
kgen
The load pays into the market an amount the exceeds the amount generators are paid by the
congestion charges. These charges may be computed as the sum of products of line constraint
dual variables and the RHS of the constraint. Let’s check that in the example we just did.
42
Settlement with congestion (fixed demand)
Recall that the amount paid by
loads exceeds that paid to the
gens by $25.77.
M
CC    j Pbj  86* .016  25.8
j 1
Equality constraints
Equation
Value
PB1
0.0000
PB2
0.0000
PB3
-86.000
PB4
0.0000
PB5
0.0000
P1
1243.25
P2
1211.00
P3
1264.75
P4
1254.00
Lower bounds
Variable
value
Pg1
-63.750
Pg2
0.0000
Pg4
0.0000
PB1
0.0000
PB2
0.0000
PB3
0.0000
PB4
0.0000
PB5
0.0000
θ1
0.0000
θ2
0.0000
θ3
0.0000
θ4
0.0000
Upper bounds
variable
value
Pg1
0.0000
Pg2
0.0000
Pg4
0.0000
PB1
0.0000
PB2
0.0000
PB3
-86.000
PB4
0.0000
PB5
0.0000
θ1
0.0000
θ2
0.0000
θ3
0.0000
θ4
0.0000
43
Settlement with congestion (w/demand bidding)
pg1
pg2
pg4
pd2
pd3
pb1
theta4
pb2
theta2
pb3
theta3
pb4
pb5
0.506667
1.500000
1.800000
1.806667
2.000000
-0.586667
0.058667
0.466667
-0.046667
0.160000
-0.062667
1.213333
0.626667
Equality constraints
Equation
Value
PB1
-0.0000
PB2
0.0000
PB3
0.0187
PB4
0.0000
PB5
0.0000
P1
1307.0
Amount paid to generators:
P2
P3
P4
1300.0
1311.7
1309.3
Lower bounds
Variable
value
Pg1
0.0000
Pg2
0.0000
Pg4
0.0000
Pd2
0.0000
Pd3
111.6667
PB1
0.0000
PB2
PB3
PB4
PB5
θ1
θ2
θ3
θ4
Paymentg1  Pg1  LMP1  50.67MW 13.07$ / MWhr  662.21$ / hr
Paymentg 2  Pg 2  LMP2  150MW 13.00$ / MWhr  1950.00$ / hr
Paymentg 4  Pg 4  LMP4  180MW 13.09$ / MWhr  2356.74$ / hr
Amount paid by loads:
Paymentd 2  Pd 2  LMP2  180.667MW 13.00$ / MWhr  2348.67$ / hr
Paymentd 3  Pd 3  LMP2  200MW 13.12$ / MWhr  2623.40$ / hr
Amount paid by loads exceeds that
paid to the gens by $3.12.
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
Upper bounds
variable
value
Pg1
0.0000
Pg2
-89.0000
Pg4
-55.3333
Pd2
0.0000
Pd3
0.0000
PB1
0.0000
PB2
PB3
PB4
PB5
θ1
θ2
θ3
θ4
0.0000
-18.6667
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
Total payments to gens:
662.21+1950.00+2356.74
=4968.95$/hr.
Total payments by loads:
2348.67+2623.40
=4972.07$/hr,
Use dual variable from line flow constraint:
44
18.6667*.16=2.99
Summary
1.
2.
3.
4.
5.
Congestion causes LMPs to vary from one bus to another.
“Marginal” or “regulating” buses are not at either limits.
There will always be at least n+1 regulating buses, where n is number of congested lines.
We optimize on the offers and bids but we settle at the LMPs.
If there is no congestion, the payments by the loads will equal the payments to the
generators.
6. If there is congestion, the payments by the loads will exceed the payments to the
generators by the congestion charges.
7. The congestion charges equal the sum over all congested lines of the product of each line’s
dual variable and its line flow limit.
45
Download