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 301 10 2 10 3 10 4 Pg1 301 10 2 10 3 10 4 0 Pg 2 1 101 20 2 10 3 1.1787 101 10 2 30 3 10 4 Pg 4 101 10 3 20 4 P1 Pg1 Pd1 P2 Pg 2 Pd 2 P3 Pg 3 Pd 3 P4 Pg 4 Pd 4 Pg 2 101 20 2 10 3 1 101 10 2 30 3 10 4 1.1787 Pg 4 101 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 D0 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 101 10 4 10 0 0 0 0 1 0 0 - 1 10 0 1 1 1 0 101 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 101 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 101 10 3 0 Pb1 101 10 4 0 Pb 2 101 10 2 0 Pb 3 10 2 10 3 0 Pb 4 10 3 10 4 0 Pb 5 101 10 3 0 7 Example , minimize: Z 1307Pg1 1211Pg 2 1254Pg 4 Pg1 301 10 2 10 3 10 4 0 Pg 2 101 20 2 10 3 1 101 10 2 30 3 10 4 1.1787 P B' 0 Pg 4 101 10 3 20 4 0 Pb1 101 10 4 0 Pb 2 101 10 2 0 Pb 3 10 2 10 3 0 Pb 4 10 3 10 4 0 PB ( D A) 0 Pb 5 101 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 kLoadBuses C ( P ) k j jGenBuses 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 kLoadBuses jGenBuses 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 kLoadBuses jGenBuses 23 Demand bidding Linearizing both objective functions results in the following problem: min s P gk gk kgenerator _ buses s kload _ 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 301 10 2 10 3 10 4 Pg 2 Pd 2 101 20 2 10 3 Pd 3 101 10 2 30 3 10 4 Pg 4 101 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 301 10 2 10 3 10 4 0 Pg 2 Pd 2 101 20 2 10 3 0 Pd 3 101 10 2 30 3 10 4 0 Pg 4 101 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 D0 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 101 10 4 10 0 0 0 0 1 0 0 - 1 10 0 1 1 1 0 101 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 101 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 101 10 3 0 Pb1 101 10 4 0 Pb 2 101 10 2 0 Pb 3 10 2 10 3 0 Pb 4 10 3 10 4 0 Pb 5 101 10 3 0 2 7 Example with demand bidding , minimize: Z 1307Pg1 1211Pg 2 1254Pg 4 1300Pd 2 1200Pd 3 Pg1 301 10 2 10 3 10 4 0 Pg 2 Pd 2 101 20 2 10 3 0 Pd 3 101 10 2 30 3 10 4 0 P B' 0 Pg 4 101 10 3 20 4 0 Pb1 101 10 4 0 Pb 2 101 10 2 0 Pb 3 10 2 10 3 0 PB ( D A) 0 Pb 4 10 3 10 4 0 Pb 5 101 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 kload kgen 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