Part 7 · Chapter 31

Economic Load Dispatch

A given demand can be shared among the running machines in infinitely many ways, and every one of them costs a different amount — economic dispatch is the discovery that the cheapest split is the one at which the next rupee spent buys the same megawatt at every plant.

Electric Power Systems Prof. Mithun Mondal Reading time ≈ 50 min
i What you'll learn
  • How a heat-rate curve becomes a fuel cost function \(F_i(P_i)\), and why its slope — the incremental fuel cost — and not its average value is what dispatch works with.
  • Why the cheapest allocation of a fixed demand equalises \(dF_i/dP_i\) across all units, first by a two-unit exchange argument and then by Lagrange multipliers.
  • What the multiplier \(\lambda\) is: the cost of the next megawatt, the number the whole control centre is organised around.
  • How generator limits break the equal-\(\lambda\) rule, and the exact replacement — a unit pinned at \(P_{\max}\) has \(dF/dP \le \lambda\), one pinned at \(P_{\min}\) has \(dF/dP \ge \lambda\).
  • How transmission losses are written as \(P_L = \mathbf{P}^{T}\mathbf{B}\,\mathbf{P}\) with B-coefficients, and where that quadratic form comes from.
  • Why the penalty factor \(L_i = 1/(1-\partial P_L/\partial P_i)\) multiplies each incremental cost, and how it can reverse the merit order of two plants outright.
  • The iterative algorithm that solves the coordination equations, and how little of the saving actually comes from dispatch — which is the argument for Chapter 32.
Section 31-1

Feasible Is Not the Same as Cheap

Part 4 of this book solved the load flow. Given the generation at every plant and the demand at every bus, Chapters 19 and 20 returned the voltages, the angles and the flows, and told us whether the resulting operating point was acceptable. What that machinery never asked is where the generation schedule came from. It was an input.

Chapter 30 supplied the other half of the input: the load, hour by hour, given to the operator and not chosen by him. Put the two together and a gap appears between them. At three o'clock this afternoon the system will be asked for, say, \(1000\) MW. There are twenty machines synchronised and capable of producing it. There is an enormous number of ways to divide \(1000\) MW among twenty machines, every one of them satisfies the power balance, and a load flow would pronounce most of them perfectly feasible. They do not cost the same. Some of them cost several percent more than others, and several percent of a national fuel bill is a very large sum of money.

Economic load dispatch is the problem of choosing among those feasible schedules. Its statement is short: for a set of generators already running and synchronised, find the outputs \(P_1,\dots,P_N\) that minimise the total cost of fuel while meeting the demand exactly and respecting each machine's operating limits.

🔑
The economic dispatch problem
\[ \min_{P_1,\dots,P_N}\;\; F_T=\sum_{i=1}^{N}F_i(P_i) \qquad\text{subject to}\qquad \sum_{i=1}^{N}P_i = P_D + P_L,\qquad P_{i,\min}\le P_i \le P_{i,\max} \]

\(F_i(P_i)\) is the running cost of unit \(i\) in Rs/h, \(P_D\) the total demand and \(P_L\) the transmission loss. Sections 31-2 to 31-5 take \(P_L=0\); Sections 31-6 to 31-9 put it back.

Three things are deliberately outside this statement, and it is worth naming them now so that the boundaries of the chapter are clear.

Which machines are running is not decided here. Dispatch takes the set of synchronised units as given. Choosing that set — deciding hours ahead which boilers to light and which to bank — is unit commitment, and it is the subject of Chapter 32. The two problems nest: commitment must repeatedly ask "if I commit this set, what will dispatch cost?", so every commitment study runs an economic dispatch inside it many thousands of times.

Fixed costs do not appear. Chapter 30 separated the cost of a power system into a part that depends on the plant installed and a part that depends on the energy produced. Capital charges, interest, depreciation, insurance, salaried staff — all of these are incurred whether the machine is loaded to \(30\) MW or \(300\) MW, so they cannot influence the split of a given demand. Only the costs that vary with output belong in \(F_i(P_i)\), and in a thermal or nuclear station that means fuel, with a small allowance for output-dependent operation and maintenance.

Dispatch is a fast loop. The demand of Chapter 30 moves continuously, so the answer computed at three o'clock is stale by five past. In a modern control centre the dispatch is re-solved every two to five minutes, and between solutions the automatic generation control of Chapter 33 moves the machines along their governor characteristics to follow the residual error. Dispatch sets the targets; AGC chases them.

Where the chapter sits. Chapter 30 gave the load. Chapters 19 and 20 test a schedule. Chapter 31 chooses one. Chapter 32 decides which machines are available to choose among, and Chapter 33 makes the machines actually go there. Read together, Part 7 is a single control loop running on four different time scales — seconds, minutes, hours and days.
Section 31-2

The Input–Output Curve and Incremental Fuel Cost

A thermal unit is tested by holding it at a steady output and measuring the fuel consumed. Repeating the test across the operating range produces the input–output curve: heat input in kcal/h (or Btu/h, or tonnes of coal per hour) plotted against electrical output in MW. Multiplying the vertical axis by the delivered price of fuel converts it into the fuel cost curve \(F_i(P_i)\) in Rs/h, and it is this curve that dispatch uses.

Two features of the measured curve matter. It does not pass through the origin — a machine held at zero output still burns fuel to keep the boiler hot, the auxiliaries turning and the turbine on turning gear — and it bends upward, because a turbine is most efficient near its design point and its efficiency falls away as it is pushed harder. Over the normal operating band both features are captured well by a quadratic:

Fuel cost function of a thermal unit
\[ F_i(P_i) = a_i + b_i P_i + c_i P_i^{\,2} \qquad \text{Rs/h}, \qquad c_i \gt 0 \]

Here \(a_i\) is the no-load cost in Rs/h, \(b_i\) has units of Rs/MWh and \(c_i\) of Rs/MW²h. The condition \(c_i>0\) is not cosmetic; it makes \(F_i\) convex, and Section 31-3 will show that convexity is precisely what guarantees the rule we are about to derive finds a minimum rather than some other stationary point.

The quantity that governs the whole subject is the slope of this curve, not its height and not its average.

🔑
Definition
\[ \text{Incremental fuel cost (IC)}\;=\;\frac{dF_i}{dP_i}\;=\;b_i + 2c_i P_i \qquad \text{Rs/MWh} \]

It answers a single question: if this machine is asked for one more megawatt, how many more rupees per hour will it burn? For a quadratic cost the incremental cost is a straight line rising with output, with intercept \(b_i\) and slope \(2c_i\).

The distinction between incremental and average cost is the single most common source of error in this subject, so it deserves a table. Take a unit with \(F = 250 + 8.0P + 0.004P^{2}\) Rs/h and an operating range of \(50\) to \(250\) MW.

Output \(P\) (MW)Fuel cost \(F\) (Rs/h)Average cost \(F/P\) (Rs/MWh)Incremental cost \(dF/dP\) (Rs/MWh)
50660.013.208.40
1001090.010.908.80
1501540.010.279.20
2002010.010.059.60
2502500.010.0010.00

The two columns move in opposite directions over most of the range. Average cost falls as the no-load cost \(a_i\) is spread over more megawatt-hours; incremental cost rises because the machine grows less efficient as it is loaded. They meet at one point, and only one. Setting \(d(F/P)/dP = 0\) on \(F/P = a/P + b + cP\) gives \(-a/P^2 + c = 0\), so the average cost is least at

Point of maximum efficiency
\[ P^{*} = \sqrt{a_i/c_i} = \sqrt{250/0.004} = 250\ \text{MW}, \qquad \left.\frac{F}{P}\right|_{P^{*}} = \frac{250}{250}+8.0+0.004(250) = 10.00 = \left.\frac{dF}{dP}\right|_{P^{*}} \]

That average and incremental cost coincide at the point of best efficiency is a general fact, not an accident of these numbers: a function's average equals its marginal exactly where the average is stationary. It will reappear in Chapter 32, where the full-load average cost is the number used to rank machines for commitment, precisely because commitment is a decision about whole machines and not about marginal megawatts.

P (MW) F (Rs/h) a slope = dF/dP P₀ input–output curve P (MW) dF/dP (Rs/MWh) b P₀ slope = 2c incremental cost
The fuel cost curve and its slope — dispatch works entirely with the right-hand plot

Real machines depart from the smooth quadratic in one important way. A steam turbine admits steam through several governor valves opened in sequence, and each time a new valve begins to open the throttling loss jumps, putting a small ripple — the valve-point loading effect — on the incremental cost line. A unit fired on two fuels shows a step where the fuels change over. Both destroy convexity locally and both are ignored in the classical treatment that follows; they are the reason production-grade dispatch programs use piecewise-linear incremental cost curves rather than a single quadratic.

Section 31-3

Equal Incremental Cost, and Why It Is Optimal

Before any calculus, an argument that needs none. Two units share a fixed demand \(P_D\), so \(P_1+P_2=P_D\) and any change must satisfy \(dP_2=-dP_1\). Suppose at the present split unit 1 has the lower incremental cost, \(dF_1/dP_1 < dF_2/dP_2\). Move a small amount \(\Delta P\) of output from unit 2 to unit 1. Unit 1's cost rises by \((dF_1/dP_1)\Delta P\); unit 2's falls by \((dF_2/dP_2)\Delta P\). The net change is

The exchange argument
\[ \Delta F_T = \left(\frac{dF_1}{dP_1} - \frac{dF_2}{dP_2}\right)\Delta P \;\lt\; 0 \]

The total cost has gone down, and it will keep going down for as long as the two incremental costs differ, because the transfer is always profitable in the direction of the cheaper margin. The process can only stop when there is no difference left to exploit. That is the whole idea; everything that follows is bookkeeping to extend it to \(N\) units and to handle the cases where the transfer runs into a wall.

The formal derivation uses a Lagrange multiplier. We minimise \(F_T=\sum_i F_i(P_i)\) subject to the single equality constraint \(\phi = P_D - \sum_i P_i = 0\), so we form the Lagrangian

Lagrangian and its stationary conditions
\[ \mathcal{L}(P_1,\dots,P_N,\lambda) \;=\; \sum_{i=1}^{N}F_i(P_i) \;+\; \lambda\left(P_D - \sum_{i=1}^{N}P_i\right) \]
\[ \frac{\partial \mathcal{L}}{\partial P_i} = \frac{dF_i}{dP_i} - \lambda = 0, \qquad i=1,\dots,N \]
\[ \frac{\partial \mathcal{L}}{\partial \lambda} = P_D - \sum_{i=1}^{N}P_i = 0 \]

The first set of \(N\) equations says that every unit's incremental cost equals the same number \(\lambda\); the last equation is the power balance we started with. Together they are \(N+1\) equations in the \(N+1\) unknowns \(P_1,\dots,P_N,\lambda\).

🔑
The equal-incremental-cost criterion (coordination equation)
\[ \frac{dF_1}{dP_1}=\frac{dF_2}{dP_2}=\cdots=\frac{dF_N}{dP_N}=\lambda, \qquad \sum_{i=1}^{N}P_i = P_D \]

The cheapest way to meet a fixed demand with a fixed set of machines is to load them so that all incremental fuel costs are equal. Note what the rule does not say: it says nothing about efficiency, nothing about which machine is newest, and nothing about average cost. A very efficient unit and a very inefficient one are both loaded to the point where their margins match.

Stationarity alone does not prove a minimum, and here the second-order test is easy. With \(P_N\) eliminated by the constraint, the Hessian of \(F_T\) in the remaining \(N-1\) variables has entries \(F_i''\delta_{ij}+F_N''\), and since every \(F_i''=2c_i>0\) that matrix is positive definite. The cost surface is a bowl, the stationary point is its bottom, and it is unique. This is why the assumption \(c_i>0\) in Section 31-2 mattered: strip it away — allow the valve points and fuel changeovers back in — and the surface acquires local minima that the equal-\(\lambda\) rule cannot distinguish.

The multiplier \(\lambda\) is not an artefact of the algebra. Differentiate the optimal cost with respect to the demand and the constraint terms cancel, leaving \(dF_T^{*}/dP_D = \lambda\). The multiplier is the system incremental cost — the rupees per hour it costs to serve one more megawatt, evaluated at the optimum. It is the number displayed on the wall of every load despatch centre, the number that decides whether an import from a neighbouring region is worth taking, and, in a market, the number that clears the energy price. Chapter 30 argued that a sound tariff should reflect the cost of causing the next unit of consumption; \(\lambda\) is that cost, computed.

dF₁/dP₁ dF₂/dP₂ unit 1 unit 2 λ P₁ P₂ total width = P₁ + P₂ = P_D
The two incremental cost lines drawn back to back — the crossing fixes both λ and the split
Reading the picture. Slide the vertical divider away from the crossing and the shaded gap between the two lines opens up; the area of that gap is precisely the extra fuel cost incurred. Because the gap closes quadratically as the divider approaches the crossing, the cost penalty near the optimum is second order — a fact Example 1 makes uncomfortably concrete, and the reason a real operator is untroubled by being a few megawatts off the ideal split.
Section 31-4

Solving the Dispatch: Direct Formula and λ-Iteration

For quadratic cost curves the coordination equations can be solved in closed form. Invert each incremental cost relation \(\lambda = b_i + 2c_iP_i\) to express the output demanded of unit \(i\) by a given system incremental cost,

Output as a function of λ
\[ P_i(\lambda) = \frac{\lambda - b_i}{2c_i} \]

and substitute into the power balance \(\sum_i P_i = P_D\):

Direct solution for λ
\[ \sum_{i=1}^{N}\frac{\lambda - b_i}{2c_i} = P_D \quad\Longrightarrow\quad \lambda\sum_{i=1}^{N}\frac{1}{2c_i} = P_D + \sum_{i=1}^{N}\frac{b_i}{2c_i} \]
\[ \boxed{\;\lambda = \frac{P_D + \displaystyle\sum_{i=1}^{N} \frac{b_i}{2c_i}}{\displaystyle\sum_{i=1}^{N}\frac{1}{2c_i}}\;} \]

One evaluation gives \(\lambda\), and back-substitution gives every \(P_i\). The formula has an instructive shape: \(\lambda\) is a weighted average of the intercepts \(b_i\) plus a term proportional to demand, and the weights \(1/2c_i\) are the flatness of each incremental cost line. A unit with a flat incremental cost — small \(c_i\) — is given a large weight and takes a large share of any change in demand, which is exactly the behaviour one would want from a large base-load machine.

The closed form is a luxury that disappears the moment anything is added to the problem: a generator limit, a loss term, a piecewise-linear cost curve, a valve point. What survives all of these is the observation that the power balance is a scalar equation in the scalar \(\lambda\). Define the mismatch

The mismatch function
\[ g(\lambda) \;=\; \sum_{i=1}^{N}P_i(\lambda) \;-\; P_D \]

Every \(P_i(\lambda)\) is non-decreasing in \(\lambda\), so \(g\) is non-decreasing and a root-finder cannot get lost. Bracket the root with a low and a high trial value, then bisect or interpolate. This is the λ-iteration, and it is the backbone of practical dispatch codes.

StepActionRemark
1Choose \(\lambda^{\text{lo}}\) below all \(b_i\) and \(\lambda^{\text{hi}}\) above every \(b_i+2c_iP_{i,\max}\)Guarantees \(g(\lambda^{\text{lo}})<0<g(\lambda^{\text{hi}})\)
2Take \(\lambda = \tfrac12(\lambda^{\text{lo}}+\lambda^{\text{hi}})\)Or interpolate linearly on \(g\) — see below
3For each unit, \(P_i = (\lambda-b_i)/2c_i\), then clamp to \([P_{i,\min},P_{i,\max}]\)Section 31-5 shows the clamp is exactly right
4Form \(g(\lambda)=\sum P_i - P_D\)Include \(P_L\) here once losses are added
5If \(g>0\) set \(\lambda^{\text{hi}}=\lambda\); if \(g<0\) set \(\lambda^{\text{lo}}=\lambda\)Bracket always contains the root
6Repeat from step 2 until \(|g|\) is below toleranceTypically \(0.1\) MW on a large system

One refinement makes the iteration converge in very few steps. Between two consecutive values of \(\lambda\) at which no unit hits a limit, every \(P_i(\lambda)\) is linear and therefore \(g\) is linear too, with slope \(\sum_{i\,\text{free}}1/2c_i\) over the currently free units. Linear interpolation between two brackets that share the same set of free units therefore lands on the root exactly, not approximately. In practice a few bisections identify which units are at their limits, and one interpolation then finishes the job — a pattern Example 3 displays step by step.

Section 31-5

Generator Limits and What Happens at a Bound

No machine can be loaded arbitrarily. The upper limit \(P_{i,\max}\) is set by the turbine and generator ratings and by the boiler's maximum continuous rating. The lower limit \(P_{i,\min}\) is less obvious but no less real: below roughly \(30\) to \(40\) per cent of rating a large boiler cannot maintain stable combustion and the correct steam temperature at the superheater outlet without oil support, and the drum-level and flame-stability margins vanish. A hydro set has its own lower limit set by cavitation and rough-running zones. So each unit is confined to

Generation limits
\[ P_{i,\min} \;\le\; P_i \;\le\; P_{i,\max}, \qquad i = 1,\dots,N \]

The equal-\(\lambda\) rule may demand an output outside this band, and when it does the rule as stated is simply wrong. The correct generalisation comes from attaching multipliers to the inequalities as well. Writing the Lagrangian with multipliers \(\mu_i^{\max}\ge0\) on \(P_i-P_{i,\max}\le0\) and \(\mu_i^{\min}\ge0\) on \(P_{i,\min}-P_i\le0\), the stationarity condition becomes \(dF_i/dP_i-\lambda+\mu_i^{\max}-\mu_i^{\min}=0\), together with the complementary slackness statements that \(\mu_i^{\max}\) can be non-zero only when \(P_i=P_{i,\max}\), and \(\mu_i^{\min}\) only when \(P_i=P_{i,\min}\). Sorting the three possible cases gives the Kuhn–Tucker conditions for dispatch.

🔑
Optimality with limits
\[ \frac{dF_i}{dP_i}=\lambda \;\;\text{for}\;\; P_{i,\min}\lt P_i \lt P_{i,\max}, \qquad \frac{dF_i}{dP_i}\le\lambda \;\;\text{for}\;\; P_i=P_{i,\max}, \qquad \frac{dF_i}{dP_i}\ge\lambda \;\;\text{for}\;\; P_i=P_{i,\min} \]

Read them as statements about frustrated desire. A unit sitting at its ceiling is cheaper at the margin than the system price and would gladly produce more, but cannot. A unit sitting at its floor is dearer than the system price and would gladly produce less, but must not.

The computational recipe follows immediately and is the classical one taught in every course. Solve the unconstrained problem; if any unit violates a limit, fix the most badly violating unit at the limit it crossed, subtract its fixed output from the demand, and re-solve the reduced problem for the remaining free units. Repeat until no violation remains, then verify the inequality conditions above at each fixed unit. The verification is not a formality: it is possible, when a unit is fixed prematurely, for the re-solved \(\lambda\) to move back across that unit's incremental cost, in which case the unit must be released and the process restarted.

The λ-iteration of Section 31-4 handles all of this automatically, which is why practical codes prefer it. Clamping \(P_i(\lambda)\) to the band at step 3 makes each \(P_i(\lambda)\) a saturating ramp: flat at \(P_{i,\min}\) for small \(\lambda\), linear in the middle, flat at \(P_{i,\max}\) for large \(\lambda\). The sum of such ramps is a continuous non-decreasing piecewise-linear function of \(\lambda\), the root of \(g\) is unique, and the clamped solution automatically satisfies the Kuhn–Tucker inequalities — a unit clamped high has \(b_i+2c_iP_{i,\max}\le\lambda\), which is exactly the condition required.

Limits are why the merit order is not a list. One might imagine dispatch as a simple ranking: load the cheapest machine to the ceiling, then the next. That is what the average cost would suggest and it is what Chapter 32 will do for commitment. It is wrong for dispatch, because incremental costs rise with output: a machine that starts cheapest does not stay cheapest, and a well-dispatched system usually has most of its units part-loaded and only a few at their limits.
Section 31-6

Transmission Losses Change the Question

Everything so far treated the network as a copper plate. That is defensible for the units of a single station, all connected to the same busbar through a few metres of busduct. It is indefensible for a system whose plants are hundreds of kilometres apart, because the megawatt that leaves a remote plant is not the megawatt that arrives at the load.

Consider the extreme case. Plant \(A\) is sited at the coal pit, \(400\) km from the load centre, and generates at an incremental cost of \(9\) Rs/MWh. Plant \(B\) stands beside the load and costs \(10\) Rs/MWh. The equal-\(\lambda\) rule of Section 31-3 says load \(A\) until its incremental cost climbs to meet \(B\)'s. But if \(12\) per cent of \(A\)'s extra output is dissipated as \(I^{2}R\) on the way, then producing one extra megawatt at \(A\) delivers only \(0.88\) MW to the load; to deliver a full megawatt \(A\) must generate \(1/0.88 = 1.136\) MW, at a cost of \(1.136\times 9 = 10.23\) Rs. Plant \(A\), cheaper at the busbar, is dearer at the load. The merit order has reversed, and no amount of care with the fuel cost curves would reveal it.

So the loss must enter the optimisation, and it enters through the constraint rather than the objective. The power balance becomes

Power balance with transmission loss
\[ \sum_{i=1}^{N}P_i \;-\; P_L(P_1,\dots,P_N) \;=\; P_D \]

with \(P_L\) the total real power loss of the transmission network, which depends on how the generation is distributed and not merely on its total. Two features of this constraint distinguish it sharply from the copper-plate case. It is non-linear, so the closed-form solution of Section 31-4 is gone. And it couples the units to each other through the network, so a change at plant 1 alters the loss attributable to plant 2.

Chapter 16 built the bus admittance matrix and Chapters 19 and 20 solved the load flow, which computes \(P_L\) exactly for a given schedule. Using a full load flow inside a dispatch iteration is what a modern optimal power flow does; the classical treatment instead replaces the network by a compact algebraic surrogate — the loss formula of the next section.

G₁ R₁ I₁ G₂ R₂ I₂ node t R₃ load P_D I₁ + I₂ P_L = 3[ I₁²R₁ + I₂²R₂ + (I₁+I₂)²R₃ ]
The two-plant, one-load network from which the B-coefficients are derived
Section 31-7

The Loss Formula and the B-Coefficients

The surrogate we want is an expression for \(P_L\) written purely in terms of the plant outputs \(P_1,\dots,P_N\), with no voltages and no angles in it. The figure above shows the smallest network that generates one. Two plants feed a common node \(t\) through lines of resistance \(R_1\) and \(R_2\), and the node feeds the load through a line of resistance \(R_3\) that carries both currents. The three-phase loss is

Loss in terms of currents
\[ P_L = 3\left[|I_1|^{2}R_1 + |I_2|^{2}R_2 + |I_1+I_2|^{2}R_3\right] \]

Now make the assumption that turns this into an expression in powers: take \(I_1\) and \(I_2\) to be in phase, so that \(|I_1+I_2|^{2}=(I_1+I_2)^{2}\). Expanding and grouping,

Grouped by plant
\[ P_L = 3\left[I_1^{2}(R_1+R_3) + 2I_1I_2R_3 + I_2^{2}(R_2+R_3)\right] \]

Each plant current is related to its output by \(P_i = \sqrt3\,V_i I_i\cos\phi_i\), so \(I_i = P_i/(\sqrt3\,V_i\cos\phi_i)\). Substituting and cancelling the factors of three,

Kron's loss formula for two plants
\[ P_L = B_{11}P_1^{2} + 2B_{12}P_1P_2 + B_{22}P_2^{2} \]
\[ B_{11}=\frac{R_1+R_3}{(V_1\cos\phi_1)^{2}}, \qquad B_{12}=\frac{R_3}{V_1\cos\phi_1\,V_2\cos\phi_2}, \qquad B_{22}=\frac{R_2+R_3}{(V_2\cos\phi_2)^{2}} \]

The structure generalises. For \(N\) plants, collecting the outputs into a column vector \(\mathbf{P}=[P_1\;P_2\;\cdots\;P_N]^{T}\),

🔑
The loss formula
\[ P_L = \mathbf{P}^{T}\mathbf{B}\,\mathbf{P} = \sum_{i=1}^{N}\sum_{j=1}^{N}P_i B_{ij}P_j, \qquad \mathbf{B}=\mathbf{B}^{T} \]

\(\mathbf{B}\) is the symmetric \(N\times N\) matrix of loss coefficients or B-coefficients, with units of MW\(^{-1}\) when \(P\) is in MW. The diagonal terms \(B_{ii}\) are always positive — a plant loading its own outgoing circuit can only add loss — while the off-diagonal \(B_{ij}\) may be of either sign, negative when the two plants' currents partly oppose one another in a shared circuit.

The general form used in practice carries two further sets of terms, \(P_L = \sum_i\sum_j P_iB_{ij}P_j + \sum_i B_{0i}P_i + B_{00}\), where the linear and constant terms absorb the effect of loads that are not proportional to the total, and of the reference-bus injection. The purely quadratic form above is the one every textbook problem uses and the one we shall use.

It is essential to be honest about what has been assumed to get here, because the B-coefficients are the weakest link in the classical theory:

AssumptionWhy it is neededWhen it hurts
All plant currents in phaseTo write \(|I_1+I_2|^2=(I_1+I_2)^2\)Systems with large angular spread across the network
Bus voltage magnitudes constant\(V_i\) appears in every \(B_{ij}\)Heavily loaded systems with poor voltage support (Chapter 34)
Plant power factors constant\(\cos\phi_i\) appears in every \(B_{ij}\)Machines swinging between leading and lagging operation
Load distribution fixed in shapeEach load is assumed a constant fraction of the totalDays when the load pattern is unusual — festivals, faults, outages
Network configuration unchanged\(R\)'s and the topology are baked into \(\mathbf{B}\)Any line outage — the matrix must be recomputed

In consequence a utility computes several \(\mathbf{B}\) matrices — one per season, per load level, per major network configuration — from base-case load flows, and the control centre selects among them. The error in the resulting loss is typically a few per cent of the loss, which is a fraction of a per cent of the demand, and that is accurate enough for dispatch.

One algebraic property of the quadratic form will be used repeatedly. Because \(P_L\) is a homogeneous quadratic in the \(P_i\), Euler's theorem for homogeneous functions gives

Euler check on the loss formula
\[ \sum_{i=1}^{N}P_i\,\frac{\partial P_L}{\partial P_i} = 2P_L \]

This is a free arithmetic check on any B-coefficient calculation, and Example 5 uses it as one.

Section 31-8

Penalty Factors and the Coordination Equations

Return to the optimisation with the loss term restored. Minimise \(F_T=\sum_iF_i(P_i)\) subject to \(P_D + P_L(\mathbf{P}) - \sum_iP_i = 0\). The Lagrangian is

Lagrangian with losses
\[ \mathcal{L} = \sum_{i=1}^{N}F_i(P_i) + \lambda\left(P_D + P_L - \sum_{i=1}^{N}P_i\right) \]
\[ \frac{\partial\mathcal{L}}{\partial P_i} = \frac{dF_i}{dP_i} + \lambda\frac{\partial P_L}{\partial P_i} - \lambda = 0 \]

Rearranged, the condition reads

The exact coordination equation
\[ \frac{dF_i}{dP_i} = \lambda\left(1 - \frac{\partial P_L}{\partial P_i}\right) \qquad\Longleftrightarrow\qquad \frac{1}{1-\dfrac{\partial P_L}{\partial P_i}}\cdot\frac{dF_i}{dP_i} = \lambda \]

The derivative \(\partial P_L/\partial P_i\) is the incremental transmission loss (ITL) of plant \(i\): the extra megawatts of loss created system-wide by one extra megawatt generated at that plant, with all other plants held fixed. Its reciprocal-style companion is given a name of its own.

🔑
Penalty factor and the coordination equations
\[ L_i = \frac{1}{1-\dfrac{\partial P_L}{\partial P_i}}, \qquad\qquad L_1\frac{dF_1}{dP_1}=L_2\frac{dF_2}{dP_2}=\cdots=L_N\frac{dF_N}{dP_N}=\lambda \]

With the loss formula of Section 31-7, \(\partial P_L/\partial P_i = 2\sum_{j}B_{ij}P_j\). The equal-incremental-cost rule survives intact — it is merely applied to the penalised incremental cost \(L_i\,dF_i/dP_i\) rather than the raw one. Setting all \(L_i=1\) recovers Section 31-3 exactly.

The interpretation is the one the numerical illustration of Section 31-6 already suggested. If generating at plant \(i\) adds loss, \(\partial P_L/\partial P_i>0\), then \(L_i>1\) and the plant's incremental cost is inflated before comparison: to deliver a megawatt to the load the plant must generate \(L_i\) megawatts, so it should be charged \(L_i\) times its busbar cost. A plant electrically close to the load has a small ITL and a penalty factor near unity. And a plant so placed that increasing its output actually relieves the network — because it displaces power that was flowing a long way through a heavily loaded corridor — has a negative ITL, hence \(L_i<1\), and its incremental cost is discounted. Negative incremental losses are common at plants embedded in load centres and they are one reason such plants are valuable out of all proportion to their size.

Two limiting cases keep the algebra honest. If a plant is at the load bus its ITL is zero and \(L_i = 1\). And as \(\partial P_L/\partial P_i\to 1\) the penalty factor diverges: at that point an extra megawatt generated is entirely dissipated on the way, the plant can deliver nothing to the load however hard it is pushed, and no finite fuel cost could justify loading it further. Real systems never approach that condition, but the divergence is a useful reminder that \(L_i\) is a delivery efficiency turned inside out.

Why the multiplier is still \(\lambda\). Exactly as in the lossless case, \(\lambda = dF_T^{*}/dP_D\): it is the cost of one more megawatt delivered to the load, not one more megawatt generated. That is the correct number for pricing, for import decisions and for the reserve valuation of Chapter 32, and it is why \(\lambda\) rather than any individual plant's incremental cost is the quantity the control centre displays.
Section 31-9

Solving the Loss-Coordinated Dispatch

The coordination equations are non-linear and coupled: \(P_i\) appears in its own incremental cost and, through the loss formula, in every other plant's penalty factor. There is no closed-form solution, but the λ-iteration structure of Section 31-4 carries over unchanged. Substituting the quadratic cost and the quadratic loss into \(dF_i/dP_i=\lambda(1-\partial P_L/\partial P_i)\) gives, for each plant,

The plant equation at a trial λ
\[ b_i + 2c_iP_i = \lambda\left(1 - 2\sum_{j=1}^{N}B_{ij}P_j\right) \]
\[ \Longrightarrow\quad \left(2c_i + 2\lambda B_{ii}\right)P_i \;+\; 2\lambda\!\!\sum_{j\neq i}\!B_{ij}P_j \;=\; \lambda - b_i \]

For a fixed \(\lambda\) this is a set of \(N\) linear equations in \(P_1,\dots,P_N\), and that is the key to the whole algorithm: the non-linearity is confined to the outer loop on \(\lambda\). Solve the linear system, evaluate \(P_L\) from the loss formula, and test the power balance.

StepActionNotes
1Solve the lossless dispatch of Section 31-4 for \(P_D\)Provides a good starting \(\lambda\)
2At the current \(\lambda\), solve the \(N\) linear plant equations for \(\mathbf{P}\)Or, if \(\mathbf{B}\) is diagonal, one equation per plant
3Clamp any \(P_i\) that violates its limits and re-solve for the remaining free plantsSection 31-5 applies unchanged
4Compute \(P_L=\mathbf{P}^{T}\mathbf{B}\mathbf{P}\) and the mismatch \(g=\sum_iP_i-P_L-P_D\)Check \(\sum_iP_i\,\partial P_L/\partial P_i = 2P_L\)
5If \(|g|\) exceeds tolerance, adjust \(\lambda\) — increase it when \(g<0\) — and return to step 2\(g\) is monotone in \(\lambda\); bisection or secant both work
6On convergence, verify \(L_i\,dF_i/dP_i=\lambda\) at every free plantThe arithmetic check that the answer is the optimum

An equivalent and historically common arrangement iterates on the plant outputs directly: hold the penalty factors at their values from the previous iteration, solve the resulting lossless-looking problem with modified intercepts and slopes, then recompute the penalty factors from the new schedule. This converges more slowly than the λ-iteration but requires no matrix solution, and it is the form in which most hand-worked examples — including Example 4 — are set out.

Two remarks on where this leads. First, the loss formula is a stand-in for a load flow, and the obvious improvement is to stop standing in: compute \(\partial P_L/\partial P_i\) from the Jacobian of a Newton–Raphson load flow (Chapter 20) at each iteration. That is exactly what the optimal power flow does, and it additionally enforces bus voltage limits and line flow limits that the classical dispatch cannot see at all. Second, since the penalty factors depend on the schedule, a system operator running a security-constrained dispatch is solving a problem in which the network constraints of Part 4, the machine limits of this chapter and the commitment decisions of Chapter 32 are all coupled — which is why the industry solves them together as a single mixed-integer programme rather than in the sequence this book presents them.

Section 31-10

Worked Examples

1 Two units, and how little the optimum is worth

Problem. Two units of a station have fuel costs \(F_1 = 0.2P_1^{2}+40P_1+120\) Rs/h and \(F_2 = 0.25P_2^{2}+30P_2+150\) Rs/h. Find the economic schedule and its cost for a demand of \(180\) MW, and the saving over an equal split.

Solution. The incremental costs are \(dF_1/dP_1 = 0.4P_1+40\) and \(dF_2/dP_2 = 0.5P_2+30\) Rs/MWh. Equate them and impose the demand:

Coordination equations
\[ 0.4P_1+40 = 0.5P_2+30, \qquad P_1+P_2 = 180 \]
\[ 0.4P_1+10 = 0.5(180-P_1) = 90-0.5P_1 \;\Longrightarrow\; 0.9P_1 = 80 \;\Longrightarrow\; P_1 = 88.89\ \text{MW} \]
\[ P_2 = 91.11\ \text{MW}, \qquad \lambda = 0.4(88.89)+40 = 75.56\ \text{Rs/MWh} \]

Check the second incremental cost: \(0.5(91.11)+30 = 75.56\) Rs/MWh — equal, as required. The fuel costs are

Cost at the economic schedule
\[ F_1 = 0.2(88.89)^2+40(88.89)+120 = 1580.25+3555.56+120 = 5255.80\ \text{Rs/h} \]
\[ F_2 = 0.25(91.11)^2+30(91.11)+150 = 2075.31+2733.33+150 = 4958.64\ \text{Rs/h} \]
\[ F_T = 10\,214.44\ \text{Rs/h} \]

With \(P_1=P_2=90\) MW: \(F_1 = 0.2(8100)+3600+120 = 5340\) and \(F_2 = 0.25(8100)+2700+150 = 4875\), so \(F_T = 10\,215.00\) Rs/h. The saving is \(0.56\) Rs/h.

That figure is startlingly small, and it is worth understanding why rather than dismissing it. The extra cost of a deviation \(\Delta P\) from the optimal split is second order, and for two quadratic cost curves it is exactly

Cost of a deviation from the optimum
\[ \Delta F_T = \tfrac12\left(2c_1+2c_2\right)(\Delta P)^{2} = \tfrac12(0.4+0.5)(1.11)^{2} = 0.56\ \text{Rs/h} \]

Here the two machines have similar incremental cost curves and the demand happens to sit near the natural crossing, so \(\Delta P\) is small and its square smaller still. Change either — make the units genuinely dissimilar, or push the demand far from the crossing — and the penalty grows quadratically. Example 6 puts the same calculation over a day, and Section 31-6's plants show what happens when the difference is real.

2 Three units with limits, and the Kuhn–Tucker check

Problem. Three thermal units have \(F_1 = 25+10P_1+0.4P_1^{2}\), \(F_2 = 20+5P_2+0.35P_2^{2}\) and \(F_3 = 35+15P_3+0.475P_3^{2}\) Rs/h, with limits \(30\le P_1\le 500\), \(30\le P_2\le 500\) and \(30\le P_3\le 250\) MW. Find the optimum schedule for a demand of \(1000\) MW.

Solution. The incremental costs are \(0.8P_1+10\), \(0.7P_2+5\) and \(0.95P_3+15\). Using the direct formula of Section 31-4 with \(2c_i = 0.8,\,0.7,\,0.95\):

Unconstrained λ
\[ \sum\frac{1}{2c_i} = \frac{1}{0.8}+\frac{1}{0.7}+\frac{1}{0.95} = 1.2500+1.4286+1.0526 = 3.7312 \]
\[ \sum\frac{b_i}{2c_i} = \frac{10}{0.8}+\frac{5}{0.7}+\frac{15}{0.95} = 12.500+7.143+15.789 = 35.432 \]
\[ \lambda = \frac{1000+35.432}{3.7312} = 277.51\ \text{Rs/MWh} \]

Back-substituting, \(P_1 = (277.51-10)/0.8 = 334.38\) MW, \(P_2 = (277.51-5)/0.7 = 389.30\) MW and \(P_3 = (277.51-15)/0.95 = 276.32\) MW. The three sum to \(1000\) MW as they must, but \(P_3\) exceeds its ceiling of \(250\) MW.

Fix \(P_3 = 250\) MW and redispatch the remaining \(750\) MW between units 1 and 2:

Reduced problem
\[ \lambda' = \frac{750 + 12.500 + 7.143}{1.2500+1.4286} = \frac{769.643}{2.6786} = 287.33\ \text{Rs/MWh} \]
\[ P_1 = \frac{287.33-10}{0.8} = 346.67\ \text{MW}, \qquad P_2 = \frac{287.33-5}{0.7} = 403.33\ \text{MW} \]

Both lie inside their bands, and \(346.67+403.33+250 = 1000\) MW. Now apply the Kuhn–Tucker test of Section 31-5 to the fixed unit: its incremental cost at the ceiling is \(0.95(250)+15 = 252.5\) Rs/MWh, which is less than \(\lambda' = 287.33\) Rs/MWh. The condition \(dF_3/dP_3\le\lambda\) at \(P_3 = P_{3,\max}\) is satisfied, so the schedule is optimal.

The economics are worth a sentence. Unit 3, pinned at its ceiling, would produce a megawatt for \(252.5\) Rs while the system is paying \(287.33\) Rs for it — a rent of nearly \(35\) Rs/MWh that the machine cannot collect because it has no more capacity. That gap is precisely the multiplier \(\mu_3^{\max}\), and it is the quantitative signal that this unit is the one worth uprating.

3 λ-iteration with a lower limit binding

Problem. For the three units of Example 2, find the optimum schedule for a light demand of \(110\) MW by λ-iteration.

Solution. At each trial \(\lambda\) compute \(P_i = (\lambda-b_i)/2c_i\) and clamp to \([30, P_{i,\max}]\), then form the mismatch \(g=\sum P_i - 110\).

Trial \(\lambda\)\(P_1\) (MW)\(P_2\) (MW)\(P_3\) (MW)\(\sum P_i\)\(g\)
30.0025.00 → 30.0035.7115.79 → 30.0095.71−14.29
40.0037.5050.0026.32 → 30.00117.50+7.50
35.0031.2542.8621.05 → 30.00104.11−5.89
37.2034.0046.0023.37 → 30.00110.000.00

The last row was not guessed. Between \(\lambda = 35\) and \(\lambda = 40\) the same two units — 1 and 2 — are free and unit 3 is clamped, so \(g\) is linear there with slope \(1/0.8+1/0.7 = 2.6786\) MW per Rs/MWh. Linear interpolation therefore lands exactly on the root:

Interpolation on the linear segment
\[ \lambda = 35.00 + \frac{110.00-104.11}{2.6786} = 35.00+2.20 = 37.20\ \text{Rs/MWh} \]

The schedule is \(P_1 = 34\) MW, \(P_2 = 46\) MW, \(P_3 = 30\) MW. Check the Kuhn–Tucker condition at unit 3, now at its floor: \(dF_3/dP_3 = 0.95(30)+15 = 43.50\) Rs/MWh, which exceeds \(\lambda = 37.20\). The condition \(dF_i/dP_i\ge\lambda\) at \(P_i=P_{i,\min}\) holds, and the interpretation is the mirror of Example 2 — unit 3 is dearer than the system price and is running only because it is not allowed to go below \(30\) MW. Chapter 32 asks the question that follows naturally: should unit 3 be running at all?

4 Two plants with transmission loss

Problem. Two plants have incremental costs \(dF_1/dP_1 = 0.02P_1+16\) and \(dF_2/dP_2 = 0.04P_2+20\) Rs/MWh. Plant 2 is at the load bus; plant 1 is remote, and when it alone supplies \(200\) MW the transmission loss is \(8\) MW. For a demand of \(407\) MW, find the optimal schedule and compare it with the schedule that ignores losses.

Solution. Since the load and plant 2 share a bus, plant 2's output causes no loss, so \(B_{12}=B_{22}=0\) and \(P_L = B_{11}P_1^{2}\). The test condition fixes the coefficient:

B-coefficient from the loss test
\[ 8 = B_{11}(200)^{2} \;\Longrightarrow\; B_{11} = 2\times10^{-4}\ \text{MW}^{-1}, \qquad P_L = 0.0002P_1^{2} \]
\[ \frac{\partial P_L}{\partial P_1} = 0.0004P_1, \qquad \frac{\partial P_L}{\partial P_2} = 0 \;\Rightarrow\; L_2 = 1 \]

The coordination equations \(L_i\,dF_i/dP_i=\lambda\) give, for a trial \(\lambda\),

Plant equations at a trial λ
\[ 0.02P_1+16 = \lambda\left(1-0.0004P_1\right) \;\Longrightarrow\; P_1 = \frac{\lambda-16}{0.02+0.0004\lambda} \]
\[ 0.04P_2+20 = \lambda \;\Longrightarrow\; P_2 = 25(\lambda-20) \]

Start from the lossless dispatch: \(0.02P_1+16 = 0.04P_2+20\) with \(P_1+P_2=407\) gives \(P_1 = 338\), \(P_2 = 69\) and \(\lambda = 22.76\) Rs/MWh. Iterate on \(\lambda\), testing \(\sum P_i - P_L\) against \(407\) MW:

Trial \(\lambda\)\(P_1\) (MW)\(P_2\) (MW)\(P_L\) (MW)\(P_1+P_2-P_L\)Mismatch
22.76232.2769.0010.79290.48−116.52
24.00270.27100.0014.61355.66−51.34
25.00300.00125.0018.00407.000.00

The optimum is \(P_1 = 300\) MW, \(P_2 = 125\) MW, with a loss of \(18\) MW. Verify with the penalty factors:

Verification of the coordination equations
\[ \frac{\partial P_L}{\partial P_1} = 0.0004(300) = 0.12, \qquad L_1 = \frac{1}{1-0.12} = 1.1364 \]
\[ L_1\frac{dF_1}{dP_1} = 1.1364\left[0.02(300)+16\right] = 1.1364(22) = 25.00 = \lambda \]
\[ L_2\frac{dF_2}{dP_2} = 1\times\left[0.04(125)+20\right] = 25.00 = \lambda \quad\checkmark \]

Comparison. Suppose the loss is acknowledged in the power balance but the penalty factors are ignored, so the operator equates raw incremental costs. Then \(P_2 = 0.5P_1-100\) and \(P_1+P_2-0.0002P_1^{2}=407\) give \(P_1^{2}-7500P_1+2\,535\,000=0\), whence \(P_1 = 354.78\) MW, \(P_2 = 77.39\) MW and \(P_L = 25.17\) MW. Integrating the incremental costs gives the variable fuel costs \(F_1^{v}=0.01P_1^{2}+16P_1\) and \(F_2^{v}=0.02P_2^{2}+20P_2\):

Cost of ignoring the penalty factors
\[ \text{optimal:}\quad 0.01(90\,000)+16(300) + 0.02(15\,625)+20(125) = 5700.0+2812.5 = 8512.5\ \text{Rs/h} \]
\[ \text{naive:}\quad 0.01(125\,871)+16(354.78) + 0.02(5989.4)+20(77.39) = 6935.2+1667.6 = 8602.8\ \text{Rs/h} \]
\[ \text{penalty for ignoring losses} = 90.3\ \text{Rs/h}\;\;(1.06\%), \qquad \text{loss reduced from }25.17\text{ to }18.00\ \text{MW} \]

Contrast this with Example 1, where the entire benefit of optimal dispatch was \(0.56\) Rs/h. Loss coordination has bought a hundred and sixty times as much, on a smaller system, because it corrects a systematic error rather than a small deviation. This is the general pattern: for units on a common busbar the equal-\(\lambda\) rule is worth little, and for plants separated by long transmission it is worth a great deal.

5 Penalty factors from a B-matrix, and a reversed merit order

Problem. A three-plant system has, in MW\(^{-1}\), \(B_{11}=5\times10^{-4}\), \(B_{22}=4\times10^{-4}\), \(B_{33}=1.4\times10^{-3}\), \(B_{12}=1\times10^{-4}\), \(B_{13}=1.5\times10^{-4}\) and \(B_{23}=2\times10^{-4}\). The incremental costs are \(dF_1/dP_1 = 8.0+0.008P_1\), \(dF_2/dP_2 = 6.4+0.009P_2\) and \(dF_3/dP_3 = 7.5+0.007P_3\) Rs/MWh. At the schedule \(P_1=100\), \(P_2=80\), \(P_3=60\) MW, find the loss, the penalty factors, and state whether the schedule is optimal.

Solution. From \(P_L = \sum_i\sum_j P_iB_{ij}P_j\):

Transmission loss
\[ P_L = B_{11}P_1^{2}+B_{22}P_2^{2}+B_{33}P_3^{2}+2B_{12}P_1P_2+2B_{13}P_1P_3+2B_{23}P_2P_3 \]
\[ = 5.00+2.56+5.04+1.60+1.80+1.92 = 17.92\ \text{MW} \]

The incremental transmission losses are \(\partial P_L/\partial P_i = 2\sum_jB_{ij}P_j\):

Incremental transmission losses
\[ \frac{\partial P_L}{\partial P_1} = 2\left[(0.0005)(100)+(0.0001)(80)+(0.00015)(60)\right] = 2(0.067) = 0.134 \]
\[ \frac{\partial P_L}{\partial P_2} = 2\left[(0.0001)(100)+(0.0004)(80)+(0.0002)(60)\right] = 2(0.054) = 0.108 \]
\[ \frac{\partial P_L}{\partial P_3} = 2\left[(0.00015)(100)+(0.0002)(80)+(0.0014)(60)\right] = 2(0.115) = 0.230 \]

Apply the Euler check of Section 31-7 before going further: \(100(0.134)+80(0.108)+60(0.230) = 13.40+8.64+13.80 = 35.84 = 2(17.92)\). The derivatives are consistent with the loss.

Penalty factors and penalised incremental costs
\[ L_1 = \frac{1}{1-0.134}=1.1547, \qquad L_2 = \frac{1}{1-0.108}=1.1211, \qquad L_3 = \frac{1}{1-0.230}=1.2987 \]
\[ L_1\frac{dF_1}{dP_1}=1.1547(8.80)=10.16, \quad L_2\frac{dF_2}{dP_2}=1.1211(7.12)=7.98, \quad L_3\frac{dF_3}{dP_3}=1.2987(7.92)=10.29 \]

The three penalised costs are not equal, so the schedule is not optimal. Plant 2 is the cheapest at the margin and should be loaded further; plant 3 is now the dearest and should be backed off, with plant 1 taking part of the difference. This plant is serving \(100+80+60-17.92 = 222.08\) MW of demand, and redispatching it will serve the same demand for less fuel.

The instructive part is plant 3. Judged on fuel alone it is the second cheapest machine — \(7.92\) Rs/MWh against plant 1's \(8.80\). Judged on delivered cost it is the dearest, at \(10.29\) against \(10.16\). Its \(B_{33}\) is nearly three times plant 1's, so nearly a quarter of every extra megawatt it produces is lost in transmission, and that is more than enough to overturn a fuel advantage of \(0.88\) Rs/MWh. A merit order built from busbar costs would have loaded exactly the wrong machine.

6 Dispatch across a day's load curve

Problem. The two units of Example 1 supply a load of \(120\) MW for \(8\) hours, \(180\) MW for \(10\) hours and \(220\) MW for \(6\) hours. Find the daily fuel cost under economic dispatch, the daily saving over equal sharing, and the load factor.

Solution. Equating \(0.4P_1+40\) to \(0.5P_2+30\) with \(P_1+P_2=P_D\) gives the general schedule \(0.9P_1 = 0.5P_D-10\), so \(P_1 = (0.5P_D-10)/0.9\).

Load (MW)Hours\(P_1\) (MW)\(P_2\) (MW)\(\lambda\) (Rs/MWh)\(F_T\) (Rs/h)Cost (Rs)
120855.5664.4462.226081.1148 648.89
1801088.8991.1175.5610 214.44102 144.44
2206111.11108.8984.4413 414.4480 486.67
Daily total231 280.00

Under equal sharing the deviation from the optimal split is \(\Delta P = 4.44\), \(1.11\) and \(1.11\) MW in the three periods, and the second-order formula of Example 1 gives excess costs of \(\tfrac12(0.9)(4.44)^2 = 8.89\), \(0.56\) and \(0.56\) Rs/h. Over the day:

Daily saving from optimal dispatch
\[ 8.89(8)+0.56(10)+0.56(6) = 71.11+5.56+3.33 = 80.00\ \text{Rs/day} \approx 29\,200\ \text{Rs/year} \]

The energy generated is \(120(8)+180(10)+220(6) = 4080\) MWh, so by the definitions of Chapter 30 the load factor is \(4080/(220\times24) = 0.773\), and the average cost of generation is \(231\,280/4080 = 56.69\) Rs/MWh. Compare that with the incremental cost, which ranged from \(62.22\) to \(84.44\) Rs/MWh across the day, and never fell below the average.

The two numbers answer different questions and both are needed. The average cost is what must be recovered through the tariff; the incremental cost is what should determine whether the next megawatt-hour is generated here, imported, or refused. Chapter 30's two-part tariff is the commercial expression of exactly this split, and Chapter 32 will show that the gap between them widens further once start-up costs are counted.

Review

Chapter Summary

Incremental cost

\(dF_i/dP_i = b_i+2c_iP_i\) — a rising straight line. Dispatch uses the slope, never the average.

Equal-λ rule

Minimum fuel cost for a fixed demand needs \(dF_1/dP_1=\cdots=dF_N/dP_N=\lambda\).

What λ means

\(\lambda = dF_T^{*}/dP_D\), the cost of the next megawatt delivered — the system incremental cost.

Direct solution

\(\lambda = \big(P_D+\sum b_i/2c_i\big)\big/\sum 1/2c_i\), then \(P_i=(\lambda-b_i)/2c_i\).

At a limit

\(dF_i/dP_i\le\lambda\) at \(P_{i,\max}\), \(\ge\lambda\) at \(P_{i,\min}\). Clamping inside λ-iteration enforces this.

Loss formula

\(P_L=\mathbf{P}^{T}\mathbf{B}\mathbf{P}\) with symmetric B-coefficients; check \(\sum P_i\,\partial P_L/\partial P_i = 2P_L\).

Penalty factor

\(L_i = 1/(1-\partial P_L/\partial P_i)\); optimality is \(L_i\,dF_i/dP_i=\lambda\) for every plant.

Where the money is

Splitting load between similar units saves little; loss coordination and commitment save a great deal.

Practice

Practice Problems

Work in Rs, MW and MWh throughout, and check every answer against the optimality conditions — equal \(\lambda\) for free units, the Kuhn–Tucker inequalities at limits, and \(L_i\,dF_i/dP_i=\lambda\) when losses are present.

  1. Two units have \(F_1 = 0.05P_1^{2}+22P_1+300\) and \(F_2 = 0.06P_2^{2}+16P_2+400\) Rs/h. Find the economic schedule, \(\lambda\) and the total cost for demands of \(150\), \(250\) and \(400\) MW. Plot \(\lambda\) against demand and explain why it is a straight line.
  2. For the units of Problem 1, at what demand does the optimal schedule give both units the same output? Below that demand, which unit carries the larger share, and why does the answer depend on the intercepts \(b_i\) rather than the slopes?
  3. Three units have incremental costs \(0.008P_1+8.0\), \(0.012P_2+9.0\) and \(0.009P_3+7.0\) Rs/MWh, with limits \(50\le P_i\le 350\) MW for each. Find the economic schedule for a demand of \(600\) MW. Then repeat for \(200\) MW and identify which units are at a limit and which Kuhn–Tucker inequality applies to each.
  4. A unit has \(F = 400+9.0P+0.006P^{2}\) Rs/h. Find the output at which its average cost is least, the value of that average cost, and verify that it equals the incremental cost there. Explain why a commitment ranking uses this number while a dispatch calculation does not.
  5. Two plants have \(dF_1/dP_1 = 0.03P_1+18\) and \(dF_2/dP_2 = 0.05P_2+22\) Rs/MWh. The loss is \(P_L = 0.0003P_1^{2}\) MW. Find the schedule, the loss and \(\lambda\) for a demand of \(320\) MW, and the penalty factor of each plant at the solution.
  6. For the system of Problem 5, find the schedule that would result if the penalty factors were ignored, and compute the extra fuel cost per hour and the extra loss. Comment on the size of the error relative to Example 1 of this chapter.
  7. A three-plant system has \(B_{11}=6\times10^{-4}\), \(B_{22}=3\times10^{-4}\), \(B_{33}=8\times10^{-4}\), \(B_{12}=-1\times10^{-4}\), \(B_{13}=2\times10^{-4}\) and \(B_{23}=1\times10^{-4}\) MW\(^{-1}\). For \(P_1 = 120\), \(P_2 = 150\), \(P_3 = 90\) MW, find \(P_L\), all three incremental transmission losses and all three penalty factors. Verify Euler's identity. Which plant has the negative-signed coupling working in its favour, and what does the negative \(B_{12}\) mean physically?
  8. A plant is placed at a load centre so that \(\partial P_L/\partial P_i = -0.05\). Its incremental fuel cost is \(24\) Rs/MWh. A remote plant with \(\partial P_L/\partial P_j = +0.18\) has an incremental fuel cost of \(19\) Rs/MWh. Which plant should be loaded further, and by how much do the delivered costs differ? At what value of the remote plant's fuel cost would the two be equally attractive?
Tip: every dispatch answer can be checked in under a minute without redoing the algebra. Add the outputs and confirm they meet demand plus loss. Evaluate each free unit's incremental cost and confirm the values agree to the last digit you kept. At any unit sitting on a limit, confirm the inequality points the right way — a unit at its ceiling must be cheaper than \(\lambda\), a unit at its floor dearer. If a unit at a ceiling turns out to be dearer than \(\lambda\), it was clamped when it should have been released, and the schedule is not optimal.