Solved Problems · Set 27

Economic Load Dispatch

Part 6 · Operation and Economics — the plant is built; now decide, minute by minute, how much each unit should produce. Chapter 31 of the textbook.

Prof. Mithun Mondal 20 solved · 12 practice · 3 challenge GATE · ESE · University

Set 27 — Economic Load Dispatch

Set 26 settled how much plant of each kind to build. This chapter takes the plant as given and asks the operating question: with several units running, each with its own fuel cost characteristic, how should a given total demand be shared between them so the cost is least? The answer is one line — every unit should operate at the same incremental cost — and the whole chapter is that line, derived, qualified by generator limits, solved numerically, and extended to the question of which units should be running at all.

Textbook Chapter 31 · 20 solved · 12 practice · 3 challenge · 12 MCQs

i Method Recap
  • The input-output curve \(C_i = a_i+b_iP_i+c_iP_i^2\) in Rs/h gives the fuel cost of unit \(i\) at output \(P_i\). Its slope is the incremental cost \(\mathrm{IC}_i = dC_i/dP_i = b_i+2c_iP_i\), in Rs/MWh.

  • The problem: minimise \(\sum C_i(P_i)\) subject to \(\sum P_i = P_D\) and \(P_i^{\min}\le P_i\le P_i^{\max}\).

  • The equal-incremental-cost rule. At the optimum every unit not at a limit has the same incremental cost \(\lambda\): \(\dfrac{dC_1}{dP_1} = \dfrac{dC_2}{dP_2} = \cdots = \lambda\). If any two differed, shifting output from the dearer to the cheaper would reduce the total.

  • Limits modify it in one direction only. A unit at its upper limit has \(\mathrm{IC} \le \lambda\); a unit at its lower limit has \(\mathrm{IC} \ge \lambda\). Units between their limits all sit at \(\lambda\).

  • Lambda iteration: guess \(\lambda\), compute \(P_i = (\lambda-b_i)/2c_i\) clipped to the limits, compare \(\sum P_i\) with \(P_D\), and adjust. The sum is monotonic in \(\lambda\), so bisection or the secant method always converges.

  • \(\lambda\) is the system marginal price — the cost of supplying one more megawatt-hour. It is the correct price for a spot market, for valuing a loss reduction, and for deciding whether an import is worth buying.

  • Average cost is the wrong criterion. Merit order by average cost gives the wrong answer whenever the units' cost curves have different curvatures — it is the incremental cost that must be equalised.

VideoWalkthrough
Problem 1FoundationThe Input-Output Curve

Three thermal units have the cost characteristics below, with \(C\) in thousands of rupees per hour and \(P\) in MW. Establish their basic properties and the range of total output they can supply.

\[ \begin{array}{lll} C_1 = 350+8.50P_1+0.0150P_1^2 & 40 \le P_1 \le 120 \\ C_2 = 500+6.20P_2+0.0045P_2^2 & 80 \le P_2 \le 300 \\ C_3 = 400+7.20P_3+0.0080P_3^2 & 60 \le P_3 \le 200 \end{array} \]
Solution

The form and its three terms. Each is a quadratic in output:

TermMeaningUnits here
\(a\)no-load fuel cost — heat to hold the unit at synchronous speedthousand Rs/h
\(bP\)the linear bulk of the fuel costthousand Rs/h
\(cP^2\)the curvature — efficiency falls as output risesthousand Rs/h

Since \(C\) is in thousand Rs/h and \(P\) in MW, the slope \(dC/dP\) comes out in thousand Rs per MWh, which is rupees per kWh — the natural unit for the whole chapter.

Why \(a\) is not zero. A synchronised unit at zero output still burns fuel:

\[ C_1(0) = 350,\quad C_2(0) = 500,\quad C_3(0) = 400 \ \text{thousand Rs/h} \]

These are notional — no unit can actually run at zero output — but the constant matters, because it is the cost that disappears when a unit is shut down. That is what makes unit commitment (Problem 18) a different problem from dispatch, and it is the reason the constant is carried through even though it plays no part in the dispatch itself.

Why \(c > 0\), and why it must be for the theory to work:

\[ \frac{d^2C}{dP^2} = 2c > 0 \quad\Rightarrow\quad C(P) \text{ is convex} \]

Physically, a turbine's efficiency falls at high output as steam velocities and throttling losses rise. Mathematically, convexity is what guarantees that the equal-incremental-cost condition of Problem 5 gives a minimum rather than any other stationary point, and that a local optimum is global. Problem 17 examines what happens when the real curve is not convex.

The output range of the station:

\[ \sum P_i^{\min} = 40+80+60 = \mathbf{180\ MW} \qquad \sum P_i^{\max} = 120+300+200 = \mathbf{620\ MW} \]

With all three units synchronised, any demand between 180 and 620 MW can be met. Below 180 MW at least one unit must be shut down — again Problem 18 — and above 620 MW the station cannot help.

The cost at the extremes, which shows how different the three units are:

Unit\(C\) at \(P^{\min}\)\(C\) at \(P^{\max}\)Average at \(P^{\max}\) (Rs/kWh)
U1714.01586.013.22
U21024.82765.09.22
U3860.82160.010.80

Unit 2 is much the cheapest per unit of energy at full load, and unit 1 the dearest — a small old machine against a large modern one. It is tempting to conclude that unit 2 should be loaded first and unit 1 last, and Problem 4 shows why that conclusion, although it happens to be roughly right here, is reached by invalid reasoning.

Where the coefficients come from in practice:

RouteMethod
Heat-rate testmeasure fuel flow at several outputs, fit a quadratic
Manufacturer's dataguaranteed heat rate at 50/75/100% load
Operating recordsregression on metered fuel and output

The last is what most utilities actually use, updated annually. The fit is good to a few per cent over the normal operating range, and considerably worse near the minimum, where the physical curve steepens more sharply than a quadratic can follow.

The whole of economic dispatch rests on two properties of these curves: they are convex, which makes the optimum unique, and their slopes differ, which makes the optimum worth finding. The constant term takes no part in dispatch at all — but it decides which units should be running.
AnswerConvex quadratics with \(a\) the no-load cost, \(b\) the linear rate and \(c > 0\) the curvature. Station range 180–620 MW; slopes are in Rs/kWh. Average cost at full load: 13.22, 9.22, 10.80 Rs/kWh
Problem 2FoundationHeat Rate and Efficiency

A 300 MW unit has a heat-input characteristic \(H = 40+2.00P+0.0009P^2\) Mkcal/h. Find its heat rate and efficiency across the load range, locate the point of best efficiency, and relate the heat curve to the cost curve.

Solution

Heat rate is heat input per unit of electrical output:

\[ \text{HR} = \frac{H\ [\text{Mkcal/h}]\times10^6}{P\ [\text{MW}]\times10^3} = \frac{1000\,H}{P}\ \text{kcal/kWh} \]

It is the reciprocal of efficiency in disguise, and it is the quantity engineers actually quote because it can be measured directly from a fuel-flow meter and a wattmeter.

Efficiency follows from the thermal equivalent of a kilowatt-hour:

\[ 1\ \text{kWh} = 860\ \text{kcal} \quad\Rightarrow\quad \eta = \frac{860}{\text{HR}} \]

A heat rate of 2400 kcal/kWh is an efficiency of 35.8%; one of 2000 kcal/kWh is 43%. Modern supercritical coal units reach 2100–2200 kcal/kWh and combined-cycle plant about 1500.

Across the load range:

\(P\) (MW)\(H\) (Mkcal/h)HR (kcal/kWh)\(\eta\)
80205.762572.033.44%
150360.252401.735.81%
210.8502.072379.536.14%
250596.252385.036.06%
300721.002403.335.78%

The heat rate falls, reaches a minimum, and rises again — a shallow U. The unit is least efficient at low load, not at high load, which surprises people who expect efficiency to fall monotonically.

The point of best efficiency is found by minimising HR:

\[ \frac{d}{dP}\left(\frac{\alpha}{P}+\beta+\gamma P\right) = -\frac{\alpha}{P^2}+\gamma = 0 \quad\Rightarrow\quad P^* = \sqrt{\frac{\alpha}{\gamma}} \]
\[ P^* = \sqrt{\frac{40}{0.0009}} = \sqrt{44\,444} = \mathbf{210.8\ MW} = 70\%\ \text{of rating} \]

Best efficiency at 70% of rating is entirely typical. The no-load term \(\alpha\) dominates at low output and the curvature \(\gamma\) at high output, and they balance at \(\sqrt{\alpha/\gamma}\).

The crucial distinction: heat rate against incremental heat rate.

\[ \text{HR} = \frac{H}{P} \ \text{(average)} \qquad \text{IHR} = \frac{dH}{dP} = \beta+2\gamma P \ \text{(incremental)} \]
\[ \text{at } P = 300: \quad \text{HR} = 2403,\quad \text{IHR} = 2.54\ \text{Mkcal/MWh} = \mathbf{2540\ kcal/kWh} \]

The incremental heat rate is higher than the average, and it rises monotonically with output while the average has a minimum. That difference is the entire subject of Problem 4: dispatch is governed by the incremental quantity, and reasoning from the average gives wrong answers.

From heat to cost. The cost curve is the heat curve times the fuel price:

\[ C = F\times H, \qquad F = \text{Rs } 3835\ \text{per Mkcal} \]
\[ C = 153.4+7.670P+0.003452P^2\ \text{thousand Rs/h} \]

A fuel price of Rs 3835/Mkcal corresponds to coal of 4000 kcal/kg at Rs 15.34/kg — imported coal. Note that every coefficient scales with the fuel price, so a change in fuel cost scales the whole curve and, crucially, scales the incremental cost too. That is what Problem 15 exploits.

Typical heat rates, for calibration:

PlantHeat rate (kcal/kWh)Efficiency
Subcritical coal, 200 MW2500–270032–34%
Supercritical coal, 660 MW2200–235037–39%
Ultra-supercritical, 800 MW2050–215040–42%
Combined cycle gas1450–165052–59%
Open-cycle gas turbine2400–300029–36%
Diesel engine2000–220039–43%

Note the reciprocal relation to the plant-mix logic of Set 26: the plant with the best heat rate is not always the cheapest to run, because the fuel price differs. A combined-cycle unit at 1500 kcal/kWh burning gas at Rs 6000/Mkcal costs Rs 9.00/kWh in fuel; a coal unit at 2400 kcal/kWh burning coal at Rs 2500/Mkcal costs Rs 6.00/kWh. Efficiency and cost are different questions.

Heat rate has a minimum at \(\sqrt{\alpha/\gamma}\), typically 70% of rating; incremental heat rate rises monotonically and has no minimum at all. Confusing the two is the origin of nearly every wrong answer in economic dispatch.
AnswerHR falls from 2572 kcal/kWh at 80 MW to a minimum of 2379.5 kcal/kWh (36.14%) at 210.8 MW, then rises to 2403 at 300 MW. Incremental heat rate at 300 MW is 2540 kcal/kWh, above the average and rising. At Rs 3835/Mkcal the cost curve is \(153.4+7.670P+0.003452P^2\)
Problem 3FoundationIncremental Fuel Cost

Find the incremental cost characteristic of each of the three units of Problem 1, tabulate the range each covers, and identify what those ranges imply about the dispatch.

Solution

Differentiate each cost curve:

\[ \text{IC}_i = \frac{dC_i}{dP_i} = b_i+2c_iP_i \ \ \text{Rs/kWh} \]
\[ \begin{array}{ll} \text{IC}_1 = 8.50+0.0300P_1 \\ \text{IC}_2 = 6.20+0.0090P_2 \\ \text{IC}_3 = 7.20+0.0160P_3 \end{array} \]

Three straight lines. The quadratic cost curve gives a linear incremental cost curve, which is exactly why the quadratic form is used — it makes the dispatch equations linear and solvable in closed form.

The range each unit covers:

UnitIC at \(P^{\min}\)IC at \(P^{\max}\)Range (Rs/kWh)Slope \(2c\)
U19.7012.109.70 – 12.100.0300
U26.928.906.92 – 8.900.0090
U38.1610.408.16 – 10.400.0160

Three observations follow immediately, and each anticipates a later result.

Observation 1 — unit 2's range lies entirely below unit 1's.

\[ \text{IC}_2^{\max} = 8.90 < 9.70 = \text{IC}_1^{\min} \]

Whatever the demand, unit 2 should be fully loaded before unit 1 is loaded above its minimum. The two ranges do not overlap, so no equal-incremental-cost solution involving both units strictly between their limits can exist.

Observation 2 — units 2 and 3 overlap, and units 1 and 3 overlap:

\[ \text{U2}\cap\text{U3}: 8.16\text{--}8.90 \qquad \text{U1}\cap\text{U3}: 9.70\text{--}10.40 \]

In those two bands of \(\lambda\) the corresponding pair of units genuinely shares load at equal incremental cost. Outside them one or the other is pinned at a limit.

Observation 3 — unit 2's line is much the flattest (\(2c = 0.009\) against 0.030 for unit 1):

\[ \frac{dP_i}{d\lambda} = \frac{1}{2c_i}: \quad 33.3,\ 111.1,\ 62.5\ \text{MW per Rs/kWh} \]

Unit 2 responds three times as much as unit 1 to a given change in \(\lambda\). A flat incremental cost curve means a unit that takes most of any load change — and it is the large modern units, with their low \(c\), that do the regulating.

The station's aggregate incremental cost curve is obtained by adding the units horizontally:

\[ P_{\text{total}}(\lambda) = \sum_i \text{clip}\!\left(\frac{\lambda-b_i}{2c_i},\ P_i^{\min},\ P_i^{\max}\right) \]
\(\lambda\)\(P_1\)\(P_2\)\(P_3\)Total
7.0040 (min)88.960 (min)188.9
8.0040 (min)200.060 (min)300.0
8.9040 (min)300.0106.25446.25
9.7040.0300 (max)156.25496.25
10.4063.3300 (max)200.0563.3
12.10120.0300 (max)200 (max)620.0

Monotonically increasing in \(\lambda\) — which is the property that makes the lambda-iteration of Problem 8 always converge. The curve is piecewise linear with a break wherever a unit reaches a limit.

What incremental cost means physically:

\[ \text{IC}_i = \text{cost of the next MWh from unit } i \]

Not the average cost of its output, and not the cost of the last MWh it produced. It is a forward-looking marginal quantity, and it is the only cost concept that answers the question "where should the next megawatt come from?".

The incremental cost curves are straight lines, and everything about the dispatch can be read from where their ranges overlap. Unit 2's range lies entirely below unit 1's, which settles their relative loading before any calculation is done.
Answer\(\text{IC}_1 = 8.50+0.030P_1\) [9.70, 12.10]; \(\text{IC}_2 = 6.20+0.009P_2\) [6.92, 8.90]; \(\text{IC}_3 = 7.20+0.016P_3\) [8.16, 10.40] Rs/kWh. U2 and U1 do not overlap; U2 responds 3.3 times as much as U1 per unit of \(\lambda\)
Problem 4AppliedWhy Average Cost Fails

A common but incorrect rule is to load units in merit order of average cost. Show why this is wrong, and construct a case in which it gives a demonstrably worse answer.

Solution

The two quantities are different functions, and behave differently:

\[ \bar C_i = \frac{C_i}{P_i} = \frac{a_i}{P_i}+b_i+c_iP_i \qquad \text{IC}_i = b_i+2c_iP_i \]

The average has a minimum at \(P = \sqrt{a/c}\); the incremental rises monotonically. They are equal only at the point of minimum average cost, and nowhere else.

Tabulated for the three units:

Unit\(P\)Average costIncremental costWhich is larger?
U14017.859.70average
U112013.2212.10average
U28012.816.92average
U23009.228.90average
U36014.358.16average
U320010.8010.40average

The average exceeds the incremental everywhere in this range, because every unit is operating below its minimum-average-cost output. The gap narrows as output rises, and the two would cross at \(\sqrt{a/c}\) — 152.8, 333.3 and 223.6 MW respectively, all outside the units' ranges.

The logical error in the average-cost rule:

\[ \text{"unit 2 is cheapest on average, so load it fully first"} \]

But loading it fully means taking its last megawatt at IC = 8.90, while unit 3's first megawatt above minimum costs only 8.16. Those last megawatts of unit 2 are dearer than the first megawatts of unit 3, so the allocation is not optimal — even though unit 2's average cost is lower at every output.

A worked counter-example. Take \(P_D = 350\) MW with only units 2 and 3 running:

Rule\(P_2\)\(P_3\)\(C_2\)\(C_3\)Total
Average-cost merit order290602676.45860.803537.25
Equal incremental cost264862450.431078.373528.80

The average-cost rule loads unit 2 to 290 MW (leaving unit 3 at its 60 MW minimum) and costs Rs 8.45 thousand per hour more. The optimum backs unit 2 down to 264 MW and raises unit 3 to 86 MW, at which point both units have \(\text{IC} = 8.5760\) Rs/kWh.

Verify the optimum satisfies the rule:

\[ \text{IC}_2 = 6.20+0.009(264) = 6.20+2.376 = 8.576 \]
\[ \text{IC}_3 = 7.20+0.016(86) = 7.20+1.376 = 8.576 \ \checkmark \]

Equal to four decimal places, and the total is 350 MW ✓. Note that unit 2's average cost at 264 MW is 9.28 against unit 3's at 86 MW of 12.54 — the average costs are wildly unequal at the optimum, which is exactly the point.

The general principle, stated as an exchange argument:

\[ \text{move } \Delta P \text{ from unit } j \text{ to unit } i: \quad \Delta C = \left(\text{IC}_i-\text{IC}_j\right)\Delta P \]

Only the incremental costs appear. The average costs, the no-load costs and the units' sizes are all irrelevant to whether a small transfer is beneficial — and the optimum is precisely the point at which no such transfer helps, which requires all the incremental costs to be equal.

Where the average-cost rule is nonetheless used, and legitimately:

QuestionCorrect criterion
How should this demand be shared?incremental cost
Which units should be running at all?average cost including no-load
Which plant should be built?total annual cost (Set 26)
What should the next MWh be priced at?incremental cost

The second row is genuinely an average-cost question, because shutting a unit down removes its no-load cost entirely — a discrete change, not a marginal one. That is unit commitment, and it is why Problem 18 uses different reasoning from Problems 5–11.

Average cost answers "should this unit be running?"; incremental cost answers "should it be running harder?". Merit order by average cost is not an approximation to the optimum — it is the answer to a different question, and using it for dispatch costs real money.
AnswerAverage cost has a minimum at \(\sqrt{a/c}\); incremental cost rises monotonically. At \(P_D = 350\) with U2 and U3, average-cost merit order gives 290/60 and costs 3537.25; the optimum is 264/86 at 3528.80 — a saving of 8.45 thousand Rs/h, with \(\text{IC} = 8.5760\) for both
Problem 5FoundationEqual Incremental Cost

Establish the equal-incremental-cost criterion by an exchange argument, without calculus, and state its scope and its exceptions.

Solution

Suppose an allocation is optimal and consider transferring a small amount \(\Delta P\) from unit \(j\) to unit \(i\). The demand constraint is preserved, and the cost changes by:

\[ \Delta C = \frac{dC_i}{dP_i}\Delta P - \frac{dC_j}{dP_j}\Delta P = \left(\text{IC}_i-\text{IC}_j\right)\Delta P \]

to first order in \(\Delta P\). Nothing else changes: the constant terms are untouched, the other units are untouched, and the total output is unchanged.

The argument. If \(\text{IC}_i < \text{IC}_j\), then \(\Delta C < 0\) for positive \(\Delta P\) — the transfer reduces the cost, so the original allocation was not optimal. Contradiction.

\[ \Rightarrow \quad \text{IC}_i = \text{IC}_j \ \text{for every pair of units that can be adjusted in both directions} \]

Calling the common value \(\lambda\):

The criterion:

\[ \boxed{\ \frac{dC_1}{dP_1} = \frac{dC_2}{dP_2} = \cdots = \frac{dC_n}{dP_n} = \lambda\ } \qquad \sum_i P_i = P_D \]

\(n\) equations from the criterion plus one demand constraint, in \(n+1\) unknowns (\(n\) outputs and \(\lambda\)). Determinate, and for quadratic cost curves, linear.

The qualification that makes it correct. The argument required the transfer to be possible in both directions. If unit \(j\) is at its lower limit it cannot give up output; if unit \(i\) is at its upper limit it cannot take any:

\[ \begin{array}{lll} P_i^{\min} < P_i < P_i^{\max} & \Rightarrow & \text{IC}_i = \lambda \\ P_i = P_i^{\max} & \Rightarrow & \text{IC}_i \le \lambda \\ P_i = P_i^{\min} & \Rightarrow & \text{IC}_i \ge \lambda \end{array} \]

Read the second line physically: a unit is at its maximum precisely because it is cheap — we would take more if we could. And the third: a unit is held at its minimum because it is dear — we would take less if the minimum allowed. These are the Karush–Kuhn–Tucker conditions, arrived at without invoking them.

Why convexity is essential. The exchange argument shows only that the optimum is a stationary point:

\[ \frac{d^2C_i}{dP_i^2} = 2c_i > 0 \ \forall i \quad\Rightarrow\quad \text{the stationary point is the unique global minimum} \]

If some \(c_i\) were negative the same condition could identify a maximum, and if the cost curve had several local minima the criterion would be satisfied at each. Problem 17 examines exactly that situation, which arises physically from turbine valve points.

What the criterion does not depend on:

QuantityEnters the dispatch?
No-load cost \(a_i\)no — it differentiates away
Unit sizeno, except through the limits
Average costno
Unit age, efficiency, fuel typeonly through \(b_i\) and \(c_i\)
Transmission lossesnot yet — Set 28 adds them

The first row is worth dwelling on. Two units with identical \(b\) and \(c\) but no-load costs of 100 and 1000 are dispatched identically — because once both are running, the no-load cost is sunk. It reappears only when the question is whether to run them at all.

The result is more general than thermal units. The same criterion governs:

ProblemEqualise
Economic dispatchincremental fuel cost
Hydro-thermal schedulingincremental cost, with a water value
Reactive power dispatchincremental loss
Optimal capacitor placementincremental benefit per kVAr
Any resource allocationmarginal return per unit of resource

The last row is the general economic principle of which economic dispatch is one instance: at an optimum, the marginal return per unit of resource is equal across all uses. Power engineers call it equal \(\lambda\); economists call it equimarginal allocation; the mathematics is identical.

If any two adjustable units had different incremental costs, moving load from the dearer to the cheaper would save money — so at the optimum they must be equal. The whole of economic dispatch is that sentence, plus the observation that a unit at a limit cannot participate in the exchange.
AnswerAll adjustable units share a common \(\lambda = dC_i/dP_i\); a unit at its maximum has \(\text{IC} \le \lambda\), one at its minimum has \(\text{IC} \ge \lambda\). Convexity (\(c_i > 0\)) makes the stationary point the unique global minimum. No-load costs do not enter
Problem 6AppliedThe Lagrangian Derivation

Derive the equal-incremental-cost criterion formally by the method of Lagrange multipliers, and interpret the multiplier.

Solution

State the problem:

\[ \min_{P_1\ldots P_n}\ C = \sum_{i=1}^{n}C_i(P_i) \qquad\text{subject to}\qquad \sum_{i=1}^{n}P_i = P_D \]

Ignore the inequality limits for now; they are restored in Problem 9. One equality constraint means one multiplier.

Form the Lagrangian:

\[ \mathcal{L} = \sum_i C_i(P_i) + \lambda\left(P_D-\sum_i P_i\right) \]

The sign of the multiplier term is a convention; taking \((P_D-\sum P_i)\) makes \(\lambda\) come out positive, which is convenient because it will turn out to be a price.

Set the partial derivatives to zero:

\[ \frac{\partial\mathcal{L}}{\partial P_i} = \frac{dC_i}{dP_i}-\lambda = 0 \quad\Rightarrow\quad \boxed{\ \frac{dC_i}{dP_i} = \lambda \ \ \forall i\ } \]
\[ \frac{\partial\mathcal{L}}{\partial\lambda} = P_D-\sum_iP_i = 0 \quad\Rightarrow\quad \sum_iP_i = P_D \]

The first recovers the exchange argument of Problem 5; the second recovers the constraint. \(n+1\) equations in \(n+1\) unknowns.

Solve for quadratic costs. With \(C_i = a_i+b_iP_i+c_iP_i^2\):

\[ b_i+2c_iP_i = \lambda \quad\Rightarrow\quad P_i = \frac{\lambda-b_i}{2c_i} \]
\[ \sum_i\frac{\lambda-b_i}{2c_i} = P_D \quad\Rightarrow\quad \lambda\sum_i\frac{1}{2c_i} = P_D+\sum_i\frac{b_i}{2c_i} \]
\[ \boxed{\ \lambda = \frac{P_D+\sum_i b_i/2c_i}{\sum_i 1/2c_i}\ } \]

A closed-form answer, valid whenever no limit binds. Note its structure: \(\lambda\) is a weighted average of the \(b_i\) plus a term proportional to the demand, with the weights \(1/2c_i\) — so the flattest unit dominates.

Evaluate for the three units of Problem 1 at \(P_D = 450\) MW, ignoring limits:

\[ \sum\frac{1}{2c_i} = \frac{1}{0.030}+\frac{1}{0.009}+\frac{1}{0.016} = 33.333+111.111+62.500 = 206.944 \]
\[ \sum\frac{b_i}{2c_i} = \frac{8.50}{0.030}+\frac{6.20}{0.009}+\frac{7.20}{0.016} = 283.333+688.889+450.000 = 1422.222 \]
\[ \lambda = \frac{450+1422.222}{206.944} = \frac{1872.222}{206.944} = \mathbf{9.0470\ Rs/kWh} \]

And the outputs: \(P_1 = 18.23\), \(P_2 = 316.33\), \(P_3 = 115.44\) MW. Two of these violate the limits — \(P_1\) is below 40 and \(P_2\) above 300 — which is why Problems 9 and 10 exist.

The interpretation of \(\lambda\). Differentiate the optimal cost with respect to the demand:

\[ \frac{dC^*}{dP_D} = \sum_i\frac{dC_i}{dP_i}\frac{dP_i}{dP_D} = \lambda\sum_i\frac{dP_i}{dP_D} = \lambda\cdot1 = \lambda \]

using the fact that all the incremental costs equal \(\lambda\) and the outputs sum to \(P_D\). So:

The result:

\[ \boxed{\ \lambda = \frac{dC^*}{dP_D} = \text{the system incremental cost, in Rs/kWh}\ } \]

This is a general property of Lagrange multipliers — each is the sensitivity of the optimal objective to a relaxation of its constraint — and it is what makes \(\lambda\) useful far beyond the dispatch itself. It is the correct price for a spot market, the correct value to place on a megawatt of loss saved, and the correct threshold for deciding whether to buy an import. Problem 13 develops all three.

Restoring the inequality limits requires the Karush–Kuhn–Tucker conditions:

\[ \mathcal{L} = \sum_iC_i+\lambda\left(P_D-\sum_iP_i\right)+\sum_i\mu_i^+\left(P_i-P_i^{\max}\right)+\sum_i\mu_i^-\left(P_i^{\min}-P_i\right) \]
\[ \frac{dC_i}{dP_i}-\lambda+\mu_i^+-\mu_i^- = 0, \qquad \mu_i^\pm \ge 0, \qquad \mu_i^\pm\times(\text{its constraint}) = 0 \]

The complementary-slackness condition in the last line says a multiplier is non-zero only when its constraint is active. Working through the three cases reproduces exactly the inequalities of Problem 5 — \(\text{IC} \le \lambda\) at a maximum, \(\ge \lambda\) at a minimum — which is reassuring but adds nothing the exchange argument had not already given.

The Lagrange multiplier is not a mathematical device but the system's marginal price: \(\lambda = dC^*/dP_D\), in rupees per kilowatt-hour. That identification is what turns a minimisation exercise into the foundation of electricity market pricing.
Answer\(\partial\mathcal{L}/\partial P_i = 0\) gives \(dC_i/dP_i = \lambda\), and for quadratics \(\lambda = (P_D+\sum b_i/2c_i)/\sum(1/2c_i)\). At \(P_D = 450\): \(\lambda = 1872.222/206.944 = \mathbf{9.0470}\) Rs/kWh, giving 18.23 / 316.33 / 115.44 MW — two limit violations. \(\lambda = dC^*/dP_D\)
Problem 7AppliedTwo Units Worked

Units 2 and 3 alone supply 350 MW. Find the optimal allocation in closed form, verify the criterion, and show how the allocation shifts as the demand changes.

Solution

Apply the closed form with two units:

\[ \lambda = \frac{P_D+\dfrac{b_2}{2c_2}+\dfrac{b_3}{2c_3}}{\dfrac{1}{2c_2}+\dfrac{1}{2c_3}} = \frac{350+688.889+450.000}{111.111+62.500} \]
\[ \lambda = \frac{1488.889}{173.611} = \mathbf{8.5760\ Rs/kWh} \]

The outputs:

\[ P_2 = \frac{8.5760-6.20}{0.009} = \frac{2.3760}{0.009} = \mathbf{264.00\ MW} \]
\[ P_3 = \frac{8.5760-7.20}{0.016} = \frac{1.3760}{0.016} = \mathbf{86.00\ MW} \]

Both within limits (80–300 and 60–200) ✓, and summing to 350 MW ✓. Exact round numbers, which is a happy accident of the chosen data.

Verify the criterion directly:

\[ \text{IC}_2 = 6.20+0.009(264) = 8.5760 \qquad \text{IC}_3 = 7.20+0.016(86) = 8.5760 \ \checkmark \]
\[ C = \left[500+6.20(264)+0.0045(264)^2\right]+\left[400+7.20(86)+0.0080(86)^2\right] \]
\[ = 2450.43+1078.37 = \mathbf{3528.80} \ \text{thousand Rs/h} \]

An average of 10.08 Rs/kWh — but note again that neither unit's average cost is anywhere near that, and neither needs to be.

The two-unit result in a memorable form. Eliminating \(\lambda\):

\[ b_2+2c_2P_2 = b_3+2c_3P_3, \qquad P_2+P_3 = P_D \]
\[ \Rightarrow\quad P_2 = \frac{2c_3P_D+(b_3-b_2)}{2(c_2+c_3)} \]

Checking: \(P_2 = [0.016(350)+(7.20-6.20)]/[2(0.0045+0.0080)] = (5.60+1.00)/0.025 = 264\) ✓. Two terms: a share of the demand weighted by the other unit's curvature, plus a fixed offset set by the difference in the linear coefficients.

How the allocation shifts with demand:

\(P_D\)\(\lambda\)\(P_2\)\(P_3\)\(\Delta P_2/\Delta P_D\)
2007.7120168.0032.00 → 60 (min)
2508.0000200.0050.00 → 60 (min)
3008.2880232.0068.000.64
3508.5760264.0086.000.64
4008.8640296.00104.000.64
450300 (max)150.000

While both units are free, unit 2 takes a fixed 64% of every increment, because \(\Delta P_2/\Delta P_D = c_3/(c_2+c_3) = 0.0080/0.0125 = 0.64\). The sharing ratio is constant, set entirely by the curvatures — not by the units' sizes, their limits or their linear coefficients.

Two limiting cases worth recognising:

\[ \begin{array}{lll} c_2 = c_3 & \Rightarrow & \text{each takes half of every increment} \\ c_2 \to 0 & \Rightarrow & \text{unit 2 takes the whole increment} \end{array} \]

The second case is a unit with a linear cost curve — constant incremental cost. Such a unit is either fully loaded or at its minimum, never in between, because its incremental cost cannot adjust to match \(\lambda\). That is exactly what a merit-order despatch assumes, and it is why merit order and equal-\(\lambda\) dispatch coincide when all the cost curves are linear.

Two units share every increment of load in the ratio \(c_2:c_3\) inverted — the flatter unit takes the larger share, and the ratio does not change with demand. The units' linear coefficients set the fixed offset; the curvatures set the sharing.
Answer\(\lambda = 1488.889/173.611 = \mathbf{8.5760}\) Rs/kWh, \(P_2 = \mathbf{264}\), \(P_3 = \mathbf{86}\) MW, \(C = 3528.80\). Unit 2 takes \(c_3/(c_2+c_3) = 64\%\) of every load increment while both are free
Problem 8AppliedLambda Iteration

Set out the lambda-iteration algorithm, explain why it always converges, and demonstrate it on the three-unit system at \(P_D = 500\) MW.

Solution

Why an iterative method is needed at all. The closed form of Problem 6 fails as soon as a limit binds, because the set of units at their limits is not known in advance:

\[ P_i(\lambda) = \text{clip}\!\left(\frac{\lambda-b_i}{2c_i},\ P_i^{\min},\ P_i^{\max}\right) \]

This is a nonlinear function of \(\lambda\) — piecewise linear, with a kink wherever a unit hits a limit. There is no general closed form, but the structure makes iteration trivial.

The key property — monotonicity:

\[ \frac{dP_i}{d\lambda} = \begin{cases}\dfrac{1}{2c_i} > 0 & \text{if free}\\[6pt] 0 & \text{if at a limit}\end{cases} \quad\Rightarrow\quad \frac{d}{d\lambda}\sum_iP_i \ge 0 \]

The total output is a non-decreasing function of \(\lambda\). So the equation \(\sum P_i(\lambda) = P_D\) has a solution, it is essentially unique, and any bracketing method finds it. Convergence is guaranteed — a property remarkably few power-system algorithms enjoy.

The algorithm:

StepAction
1Bracket: \(\lambda_{lo} = \min_i b_i\), \(\lambda_{hi} = \max_i(b_i+2c_iP_i^{\max})\)
2Take \(\lambda = \tfrac12(\lambda_{lo}+\lambda_{hi})\)
3Compute each \(P_i(\lambda)\) with clipping
4Form the mismatch \(\Delta = P_D-\sum_iP_i\)
5If \(\Delta > 0\) set \(\lambda_{lo} = \lambda\), else \(\lambda_{hi} = \lambda\); repeat from 2
6Stop when \(|\Delta| < \varepsilon\)

Bisection halves the interval each time, so it needs about \(\log_2(\text{range}/\varepsilon)\) iterations — around 20 for a 0.01 MW tolerance on a 500 MW system. The secant method converges in 4–6 but can fail at a kink; bisection never fails, and 20 evaluations of a linear formula cost nothing.

Demonstration at \(P_D = 500\) MW. Bracket \([6.20,\ 12.10]\):

Iter\(\lambda\)\(P_1\)\(P_2\)\(P_3\)\(\sum P\)\(\Delta\)
19.150040.0300.0121.88461.88+38.12
210.625070.83300.0200.0570.83−70.83
39.887546.25300.0167.97514.22−14.22
49.518840.0300.0144.92484.92+15.08
59.703140.10300.0156.45496.55+3.45
69.795343.18300.0162.21505.39−5.39
209.739141.30300.0158.70500.000.00

Twenty bisections take the mismatch below 0.01 MW. Note that unit 2 is pinned at 300 MW throughout — the algorithm handles the limit automatically, with no special logic.

Verify the converged answer analytically. With unit 2 at its maximum, units 1 and 3 must supply 200 MW at a common \(\lambda\):

\[ \frac{\lambda-8.50}{0.030}+\frac{\lambda-7.20}{0.016} = 200 \]
\[ 33.333\lambda-283.333+62.500\lambda-450.000 = 200 \quad\Rightarrow\quad 95.833\lambda = 933.333 \]
\[ \lambda = \mathbf{9.73913}, \quad P_1 = \mathbf{41.3043},\quad P_3 = \mathbf{158.6957}\ \text{MW} \ \checkmark \]

Matching the iteration to five figures. And the consistency check on unit 2: \(\text{IC}_2 = 8.90 \le \lambda = 9.739\) ✓ — a unit at its maximum must have incremental cost below \(\lambda\), which it does.

The secant method, for comparison, using the projected gradient:

\[ \lambda^{(k+1)} = \lambda^{(k)}+\frac{P_D-\sum_iP_i(\lambda^{(k)})}{\sum_{i\ \text{free}}1/2c_i} \]

Since the aggregate curve is piecewise linear, this converges in exactly one step within a segment and needs one extra step for each limit crossed. Starting from \(\lambda = 9.15\) it reaches the answer in three iterations against bisection's twenty — and this is the method real dispatch software uses, with a bisection fallback for robustness.

Scale in practice:

SystemUnitsSolution time
Single station3–8microseconds
Regional despatch50–200milliseconds
National, with losses and network500–2000seconds (an OPF, not a lambda iteration)

Plain lambda iteration remains fast enough for real-time use at any scale, which is why it survives inside the automatic generation control loop even where a full optimal power flow runs every five minutes alongside it.

The aggregate output is a non-decreasing function of \(\lambda\), so the dispatch equation has a unique solution and bisection cannot fail. That guaranteed convergence — rare among power-system algorithms — is why the method has survived unchanged since the 1930s.
AnswerBisect on \(\lambda\) with \(P_i = \text{clip}((\lambda-b_i)/2c_i)\); convergence is guaranteed by monotonicity. At \(P_D = 500\): \(\lambda = \mathbf{9.7391}\), \(P = \mathbf{41.30 / 300 / 158.70}\) MW, with unit 2 at its maximum and \(\text{IC}_2 = 8.90 < \lambda\)
Problem 9AppliedGenerator Limits

State the modified optimality conditions when generator limits are active, give the systematic procedure for finding which limits bind, and identify where the limits come from physically.

Solution

The three cases, established in Problem 5 and re-derived from the KKT conditions in Problem 6:

Unit's stateConditionPhysical reading
\(P_i^{\min} < P_i < P_i^{\max}\)\(\text{IC}_i = \lambda\)free to adjust; marginal
\(P_i = P_i^{\max}\)\(\text{IC}_i \le \lambda\)cheap — we would take more if we could
\(P_i = P_i^{\min}\)\(\text{IC}_i \ge \lambda\)dear — we would take less if allowed

The inequalities point in the directions common sense demands, which is a useful mnemonic: a unit is pinned at its ceiling because it is a bargain, and at its floor because it is expensive.

The systematic procedure:

StepAction
1Solve ignoring all limits, using the closed form
2If no limit is violated, stop — this is the answer
3Fix the most violated unit at the limit it violated
4Reduce \(P_D\) by that unit's fixed output and remove it from the free set
5Repeat from step 1 with the reduced problem
6Finally, check the inequality for every fixed unit

Fixing the most-violated unit first is what makes the procedure terminate reliably. Step 6 is not optional: a unit fixed early can turn out, once other limits bind, to belong in the free set after all.

Worked at \(P_D = 450\) MW. Round 1, from Problem 6:

\[ \lambda = 9.0470: \quad P_1 = 18.23\ (<40),\quad P_2 = 316.33\ (>300),\quad P_3 = 115.44 \ \checkmark \]

Two violations. Unit 2 exceeds its maximum by 16.33 MW; unit 1 falls short of its minimum by 21.77 MW. Unit 1 is the more violated, so fix \(P_1 = 40\).

Round 2 — units 2 and 3 supply \(450-40 = 410\) MW:

\[ \lambda = \frac{410+688.889+450.000}{173.611} = \frac{1548.889}{173.611} = 8.9216 \]
\[ P_2 = \frac{8.9216-6.20}{0.009} = 302.40\ (>300) \quad\text{— still violated} \]

Fix \(P_2 = 300\) as well.

Round 3 — only unit 3 remains free, supplying \(450-40-300 = 110\) MW:

\[ P_3 = 110\ \text{MW}, \qquad \lambda = \text{IC}_3 = 7.20+0.016(110) = \mathbf{8.96\ Rs/kWh} \]

Within limits ✓. The system incremental cost is set by unit 3 alone — it is the only marginal unit.

Step 6 — check the fixed units:

\[ \text{U1 at minimum: } \text{IC}_1 = 8.50+0.030(40) = 9.70 \ \ge\ \lambda = 8.96 \ \checkmark \]
\[ \text{U2 at maximum: } \text{IC}_2 = 6.20+0.009(300) = 8.90 \ \le\ \lambda = 8.96 \ \checkmark \]

Both inequalities hold, confirming the solution. Note how close unit 2's inequality is: 8.90 against 8.96. Only 0.06 Rs/kWh of margin — a slightly lower demand would free unit 2 from its limit.

Where the limits come from:

LimitPhysical causeTypical value
Upperturbine and boiler rating; stator heating100% of MCR
Upper (temporary)condenser cooling water temperature−3 to −8% in summer
Lowerstable combustion without oil support40–60% of rating
Lowerboiler circulation and drum level stability
Lowerturbine blade windage heating at low steam flow

The lower limit is the more interesting engineering constraint and the more expensive one. Below about 40% load a coal boiler cannot sustain a stable flame on coal alone and must be supported with oil, which is both costly and a fire risk — so the "technical minimum" is a hard operating constraint, not a preference. Reducing it from 55% to 40% is a substantial retrofit and is now commonly undertaken specifically to accommodate variable renewable generation.

A unit at its maximum has incremental cost below \(\lambda\) and one at its minimum has it above — the inequalities encode the frustrated wish to take more of the cheap unit and less of the dear one. Checking them at the end is what confirms the limit set was chosen correctly.
AnswerFree: \(\text{IC} = \lambda\); at max: \(\text{IC} \le \lambda\); at min: \(\text{IC} \ge \lambda\). At \(P_D = 450\) the procedure fixes U1 at 40 then U2 at 300, leaving \(P_3 = 110\) MW and \(\lambda = \mathbf{8.96}\) Rs/kWh; both inequalities check (9.70 ≥ 8.96 and 8.90 ≤ 8.96)
Problem 10AppliedThe Base Case

Solve the complete three-unit dispatch at \(P_D = 500\) MW, present the full result, and interpret every quantity in it.

Solution

Round 1 — ignore limits:

\[ \lambda = \frac{500+1422.222}{206.944} = \frac{1922.222}{206.944} = 9.2886 \]
\[ P_1 = 26.29\ (<40),\qquad P_2 = 343.18\ (>300),\qquad P_3 = 130.54 \ \checkmark \]

Unit 2 is violated by 43.18 MW and unit 1 by 13.71 MW, so unit 2 is fixed first this time.

Round 2 — units 1 and 3 supply 200 MW:

\[ \lambda = \frac{200+283.333+450.000}{33.333+62.500} = \frac{933.333}{95.833} = \mathbf{9.73913} \]
\[ P_1 = \frac{9.73913-8.50}{0.030} = \mathbf{41.3043}\ \text{MW} \ \checkmark \]
\[ P_3 = \frac{9.73913-7.20}{0.016} = \mathbf{158.6957}\ \text{MW} \ \checkmark \]

Both within limits, and summing with unit 2's 300 MW to exactly 500 MW ✓. Unit 1 is now just above its minimum — it has come off the limit that bound it at \(P_D = 450\).

The complete result:

Unit\(P\) (MW)StateIC (Rs/kWh)\(C\) (thousand Rs/h)Average (Rs/kWh)
U141.3043free9.7391720.6817.45
U2300.0000at max8.90002765.009.22
U3158.6957free9.73911750.0811.03
Total500.0000\(\lambda = 9.7391\)5235.7610.47

Note the two free units share the same incremental cost, 9.7391, while their average costs differ by 60% (17.45 against 11.03). That is the equal-incremental-cost rule doing exactly what Problem 4 said it would.

Reading the result. Four observations, each carrying information:

ObservationMeaning
\(\lambda = 9.7391\)the next MWh costs Rs 9.74 — the system marginal price
U2 at its maximumits capacity is worth having; a bigger U2 would save money
U1 barely above minimumit is expensive and only just worth running above the floor
Average 10.47 > U2's 9.22the marginal units drag the average up

The second row is a capacity-planning signal emerging from an operating calculation: a unit persistently at its maximum is telling the planner that more of it would be worth building — which is the link back to Set 26.

The value of unit 2's constraint. Its KKT multiplier is:

\[ \mu_2^+ = \lambda-\text{IC}_2 = 9.7391-8.9000 = \mathbf{0.8391\ Rs/kWh} \]

One more megawatt of capability on unit 2 would save Rs 839 per hour, or Rs 73.5 lakh a year if the condition persisted. That is the economic value of relieving the constraint — an uprate, a condenser clean, or a lower cooling-water temperature — and it is available directly from the dispatch without any further calculation.

The dispatch as demand varies through the day. Using the load curve of Set 26 scaled to this station:

Period\(P_D\)\(\lambda\)\(P_1\)\(P_2\)\(P_3\)
00–062007.100040100.060
06–082507.550040150.060
08–124008.633640270.489.6
12–143508.345640238.471.6
14–184508.960040300.0110.0
18–225009.739141.3300.0158.7
22–242507.550040150.060

Unit 2 does all the load-following until it saturates at 300 MW, after which unit 3 takes over and unit 1 finally comes off its floor. Units 1 and 3 sit at their minimums for two-thirds of the day — which raises the question of whether they should be running at all, and that is Problem 18.

At the optimum the two free units share an incremental cost of 9.7391 while their average costs differ by 60%, and the saturated unit's shadow price of 0.8391 Rs/kWh values every extra megawatt of its capability. One dispatch calculation yields the schedule, the price and the capacity signal together.
Answer\(\lambda = \mathbf{9.73913}\) Rs/kWh; \(P_1 = 41.3043\), \(P_2 = 300\) (at max), \(P_3 = 158.6957\) MW; \(C = \mathbf{5235.76}\) thousand Rs/h = Rs 10.47/kWh average. Unit 2's constraint is worth 0.8391 Rs/kWh
Problem 11AppliedThe Dispatch Schedule

Produce the complete dispatch schedule for the three-unit station across its whole operating range, 200 to 600 MW, and interpret the pattern.

Solution

Apply the procedure of Problem 9 at each demand. The full schedule:

\(P_D\)\(\lambda\)\(P_1\)\(P_2\)\(P_3\)\(C\)AverageBinding limits
2007.100040.00100.0060.002739.8013.699U1min, U3min
2507.550040.00150.0060.003106.0512.424U1min, U3min
3008.000040.00200.0060.003494.8011.649U1min, U3min
3508.345640.00238.4071.603904.3711.155U1min
4008.633640.00270.4089.604328.8510.822U1min
4508.960040.00300.00110.004767.8010.595U1min, U2max
5009.739141.30300.00158.705235.7610.472U2max
55010.260958.70300.00191.305735.7610.429U2max
60011.5000100.00300.00200.006275.0010.458U2max, U3max

Five distinct regimes, separated by the demands at which a limit becomes active or inactive.

The five regimes:

RangeFree unitsWho follows the load
180–317.8 MWU2 onlyunit 2 alone; 1 and 3 pinned at their minima
317.8–446.3 MWU2, U3shared 64:36 by curvature
446.3–496.3 MWU3 onlyunit 3 alone; 1 at minimum, 2 at maximum
496.3–563.3 MWU1, U3shared 35:65
563.3–620 MWU1 onlyunits 2 and 3 both at maximum

The transition at 317.8 MW is where \(\lambda\) reaches unit 3's minimum incremental cost of 8.16; the one at 446.3 MW is where unit 2 saturates at 8.90; the one at 496.3 MW is where \(\lambda\) reaches unit 1's 9.70; and the last, at 563.3 MW, is where unit 3 saturates at 10.40.

The \(\lambda\) curve is the station's supply curve. Plotting \(\lambda\) against \(P_D\):

\[ \frac{d\lambda}{dP_D} = \frac{1}{\sum_{i\ \text{free}}1/2c_i} \]
RegimeFree units\(\sum 1/2c_i\)\(d\lambda/dP_D\)
180–317.8U2111.110.0090
317.8–446.3U2, U3173.610.0058
446.3–496.3U362.500.0160
496.3–563.3U1, U395.830.0104
563.3–620U133.330.0300

The slope is a staircase, and it jumps upward whenever a unit saturates and downward whenever one comes free. The steepest region above 563 MW, where unit 1 alone is free, is where a single small unit carries every increment and the price is most sensitive — exactly the condition under which real electricity markets show price spikes.

The average cost curve is U-shaped:

\[ \text{minimum average cost } 10.4263\ \text{Rs/kWh at } P_D = 564\ \text{MW} \]

Falling from 13.70 at 200 MW to 10.4263 at 564 MW, then rising to 10.458 at 600 MW. At low demand the no-load costs of three synchronised units are spread over little output; at high demand the expensive unit 1 must be loaded. The station is cheapest per unit at 91% of its capability — which is also, exactly, the point at which unit 3 saturates.

Where \(\lambda\) and the average cost cross is worth noting:

\[ \lambda < \bar c \ \text{ for } P_D < 564, \qquad \lambda > \bar c \ \text{ for } P_D > 564 \]

Marginal cost passes through the minimum of average cost, exactly as in elementary economics — and for the same reason. If the marginal unit is cheaper than the average, adding output pulls the average down; if dearer, it pushes it up.

What the schedule is used for in an operating control room:

UseHow
Base points for AGCthe \(P_i\) columns are the setpoints
Participation factors\(dP_i/dP_D = (1/2c_i)/\sum_{\text{free}}(1/2c_j)\)
Bidding into a marketthe \(\lambda\) column is the offer curve
Buy-or-generate decisionscompare \(\lambda\) with the import price

The participation factors are what automatic generation control uses between full dispatch calculations: the AGC allocates each second's small correction in proportion to \(1/2c_i\) over the free units, and the full dispatch is recomputed every few minutes to correct the drift.

The dispatch schedule is a staircase of regimes, and \(\lambda\) steepens abruptly whenever a unit saturates. The 446–496 MW band, where only unit 3 is free, is where a 50 MW change in demand moves the price by 0.80 Rs/kWh — nearly three times the sensitivity of the band below it.
AnswerFive regimes: U2 alone (180–317.8), U2+U3 (317.8–446.3), U3 alone (446.3–496.3), U1+U3 (496.3–563.3), U1 alone (563.3–620). \(\lambda\) rises from 7.10 to 11.50 Rs/kWh with slope \(1/\sum_{\text{free}}(1/2c_i)\); average cost is U-shaped with a minimum of 10.4263 Rs/kWh at 564 MW
Problem 12AppliedSavings Over Other Rules

At \(P_D = 500\) MW, compare the optimal dispatch with four other plausible allocation rules, and quantify the annual saving.

Solution

The optimum, from Problem 10:

\[ P = (41.30,\ 300.00,\ 158.70)\ \text{MW}, \qquad C^* = 5235.76\ \text{thousand Rs/h} \]

Four alternative rules:

Rule\(P_1\)\(P_2\)\(P_3\)\(C\)ExcessAnnual (Rs lakh)
Optimum41.30300.00158.705235.76
Merit by \(b_i\) (U2, U3, U1)40.00300.00160.005235.80+0.040.04
Pro-rata capacity96.77241.94161.295345.86+110.109.6
Equal % of range98.18240.00161.825350.91+115.1510.1
Merit by size (U1, U2, U3)120.00300.0080.005378.20+142.4412.5

Annual figures assume the condition persists for 8760 hours, which it does not — but the comparison is what matters. The worst rule costs Rs 12.5 lakh a year more, or 2.7%.

The second row is the interesting one. Simple merit order by the linear coefficient \(b_i\) — load the unit with the lowest \(b\) first — costs only Rs 0.04 thousand per hour more than the true optimum:

\[ \frac{0.04}{5235.76} = 0.0008\% \]

Essentially exact. The reason is that the limits are doing most of the work here: with unit 2 at its maximum and unit 1 near its minimum, there is very little freedom left for the optimisation to exploit. Merit order gives 40/300/160 against the optimal 41.30/300/158.70 — a difference of 1.3 MW.

When does merit order fail badly? Precisely when the units are free:

\(P_D\)Free unitsMerit-order costOptimumExcess
350U2, U33906.053904.37+1.68 (0.04%)
400U2, U34339.804328.85+10.95 (0.25%)
500U1, U35235.805235.76+0.04 (0.00%)

At 400 MW, merit order loads unit 2 to its maximum of 300 and leaves unit 3 at its 60 MW minimum — but the optimum backs unit 2 down to 270.4 and raises unit 3 to 89.6. The error is 0.25%, some three hundred times larger than at 500 MW, though still small in absolute terms.

Why the savings are modest in absolute terms. The general result:

\[ \Delta C \approx \frac{1}{2}\sum_i 2c_i\left(\Delta P_i\right)^2 \]

The cost penalty of a misallocation is quadratic in the error, because the optimum is a stationary point. A 20 MW misallocation on unit 1 costs \(0.015\times400 = 6\) thousand Rs/h — small. That quadratic flatness is why crude rules perform well, and why economic dispatch was for decades regarded as a refinement rather than a necessity.

Why it is nonetheless worth doing. Three reasons:

ReasonMagnitude
The saving is free — it costs nothing to compute0.1–3% of fuel cost
On a national scale, 1% of fuel is enormoushundreds of crores a year
\(\lambda\) is needed anyway, for pricing and for lossesessential

The second row is the practical argument. A system burning Rs 50 000 crore of fuel a year saves Rs 500 crore from a 1% improvement, for the cost of a computer program written once. Few investments in the industry have a comparable return.

A caution about the annual figures. The table above extrapolates one hour to a year, which overstates the saving:

\[ \text{true annual saving} = \int_0^{8760}\left[C_{\text{rule}}(P_D(t))-C^*(P_D(t))\right]dt \]

Since the excess varies from 0.00% at 500 MW to 0.25% at 400 MW, the true annual figure depends on the load duration curve. Weighting by the daily schedule of Problem 11 gives an average excess of about 0.1% for merit order — roughly Rs 5 lakh a year for this station, and the honest number to quote. The pro-rata and equal-percentage rules, at 2%, are twenty times worse.

The cost penalty of a misallocation is quadratic in the error, so crude rules do surprisingly well — merit order costs 0.00% at one demand and 0.25% at another. That flatness is why the saving is small in percentage terms and enormous in absolute ones.
AnswerAt \(P_D = 500\): merit order +0.04 (0.0008%), pro-rata +110.10 (2.10%), equal-% +115.15 (2.20%), merit-by-size +142.44 (2.72%) thousand Rs/h. Weighted over the day, merit order costs about 0.1% — roughly Rs 5 lakh a year
Problem 13AdvancedLambda as the System Price

Interpret \(\lambda\) as a price. Compute the revenue, cost and producer surplus at \(P_D = 500\) MW if every megawatt-hour is settled at \(\lambda\), and explain what the result means.

Solution

The market interpretation. In a competitive pool, every generator is paid the system marginal price for every megawatt-hour, whatever its own cost:

\[ \text{revenue} = \lambda\sum_iP_i = \lambda P_D = 9.73913\times500 = \mathbf{4869.57}\ \text{thousand Rs/h} \]

Note this is the fuel revenue only; a real settlement includes capacity and ancillary payments.

Compare with the cost:

\[ C = 5235.76 \quad\Rightarrow\quad \text{surplus} = 4869.57-5235.76 = \mathbf{-366.20}\ \text{thousand Rs/h} \]

The generators collectively lose Rs 3.66 lakh an hour. This is not an error, and understanding why is the point of the problem.

Unit by unit:

Unit\(P\)Revenue \(\lambda P\)Cost \(C_i\)Margin
U141.30402.27726.68−324.41
U2300.002921.742765.00+156.74
U3158.701545.561744.08−198.53
Total500.004869.575235.76−366.20

Only the saturated unit makes money. Units 1 and 3, both operating at \(\text{IC} = \lambda\), lose — and they lose exactly their no-load costs plus a share of the curvature.

The explanation:

\[ \lambda P_i - C_i = (b_i+2c_iP_i)P_i-(a_i+b_iP_i+c_iP_i^2) = c_iP_i^2-a_i \]

for a free unit. So a unit is profitable at marginal-cost pricing only when \(c_iP_i^2 > a_i\), i.e. when \(P_i > \sqrt{a_i/c_i}\) — which, from Problem 2, is exactly the output of minimum average cost. Checking: unit 1 needs 152.8 MW and has 41.3; unit 3 needs 223.6 and has 158.7. Neither reaches it, so both lose.

The general result, which is the central fact about marginal-cost pricing:

\[ \boxed{\ \text{Marginal-cost pricing recovers fixed costs only when the plant is fully loaded.}\ } \]

A generator earns a positive margin only in the hours when it is inframarginal — when it is cheaper than the price-setting unit. Unit 2 earns Rs 1.57 lakh an hour here precisely because it is at its maximum and the price is set by someone dearer.

How real markets close the gap:

MechanismWhat it pays for
Scarcity pricing at peak\(\lambda\) rises far above fuel cost when capacity is tight
Capacity market / capacity paymentavailability, separately from energy
Uplift / make-whole paymenttops a unit up to its as-bid cost
Ancillary servicesreserve, frequency response, reactive support
Bilateral contracts and hedgesmost energy is not settled at the spot price at all

The first row is the theoretically clean answer and the practically troublesome one: in a well-functioning energy-only market the peak-hour prices must be high enough, often enough, to recover all fixed costs — which means occasional prices of many times the fuel cost. Political tolerance for that is limited, which is why capacity mechanisms exist almost everywhere.

Three other uses of \(\lambda\), all of which follow from \(\lambda = dC^*/dP_D\):

DecisionRuleHere
Buy an import?buy if price \(< \lambda\)buy below Rs 9.74/kWh
Value of a loss reduction1 MW of loss saved is worth \(\lambda\)Rs 9.74/kWh — see Set 28
Worth of demand responsepay up to \(\lambda\) per MWh shedRs 9.74/kWh

The second is the bridge to the next chapter: once transmission losses are included, a megawatt of generation at a remote bus delivers less than a megawatt to the load, and \(\lambda\) is the price at which that shortfall is valued.

At marginal-cost pricing a generator earns a positive margin only when \(P_i > \sqrt{a_i/c_i}\) — its output of minimum average cost. Here only the saturated unit clears that bar, and the station loses Rs 3.66 lakh an hour. Every real electricity market exists to solve that problem.
AnswerRevenue \(\lambda P_D = 4869.57\) against cost 5235.76, a deficit of 366.20 thousand Rs/h. Unit margins \(= c_iP_i^2-a_i\): only unit 2, at its maximum, is profitable (+156.74). Marginal-cost pricing recovers fixed costs only for inframarginal plant
Problem 14AppliedCost of a Load Increment

Verify numerically that \(\lambda = dC^*/dP_D\), examine how the approximation degrades for finite increments, and use the result to price a block of demand response.

Solution

Recompute the dispatch at neighbouring demands around the base case of 500 MW:

\(\Delta P_D\)\(C^*\)\(\Delta C\)\(\Delta C/\Delta P_D\)Error vs \(\lambda\)
−504767.80−467.969.3592−3.90%
−205043.80−191.969.5980−1.45%
−105139.00−96.769.6761−0.65%
−15226.03−9.73399.7339−0.05%
05235.769.73913
+15245.51+9.74439.7443+0.05%
+105333.67+97.919.7913+0.54%
+505735.76+500.0010.0000+2.68%

The ratio converges to \(\lambda = 9.73913\) as the increment shrinks, from above on one side and below on the other ✓. This is the numerical confirmation of the Lagrangian result of Problem 6.

Why the finite-difference value exceeds \(\lambda\) for an increase. Because \(\lambda\) itself rises with demand:

\[ \Delta C = \int_{P_D}^{P_D+\Delta}\lambda(P)\,dP \approx \lambda\Delta+\frac12\frac{d\lambda}{dP_D}\Delta^2 \]
\[ \frac{\Delta C}{\Delta} \approx \lambda+\frac12\frac{d\lambda}{dP_D}\Delta = 9.73913+\frac12(0.01043)(10) = 9.7913 \ \checkmark \]

Matching the +10 MW row exactly, using \(d\lambda/dP_D = 1/95.833 = 0.010435\) from Problem 11. The second-order term is what the marginal price omits.

The −50 MW case is different, and shows a limitation:

\[ \text{predicted: } 9.73913-\tfrac12(0.010435)(50) = 9.4783 \qquad \text{actual: } 9.3592 \]

The quadratic estimate is wrong by 1.3%, because between 500 and 450 MW the dispatch crosses the regime boundary at 496.3 MW: unit 1 returns to its minimum, and \(d\lambda/dP_D\) changes from 0.01043 to 0.0160. A Taylor expansion cannot cross a kink, and any use of \(\lambda\) for a large increment must check whether the limit set changes.

Pricing a block of demand response. An industrial consumer offers to shed 20 MW for four hours in the evening:

\[ \text{saving} = C^*(500)-C^*(480) = 5235.76-5043.80 = 191.96\ \text{thousand Rs/h} \]
\[ \text{per MWh shed} = \frac{191.96}{20} = \mathbf{9.598\ Rs/kWh} \]

Below \(\lambda = 9.739\) by 1.4%, partly from the curvature and partly because the block crosses the 496.3 MW regime boundary. So the utility can offer up to Rs 9.598/kWh — and paying \(\lambda\) itself would overpay by 1.4%, which for a 20 MW block is worth the extra calculation.

The four-hour value:

\[ 191.96\times4 = 767.8\ \text{thousand Rs} = \text{Rs } 7.68\ \text{lakh per event} \]

If such an event occurs on 60 evenings a year, the contract is worth Rs 4.61 crore annually — before counting the capacity benefit of a 20 MW lower peak, which from Set 26 would be worth a further Rs 0.4 crore. Demand response is priced from \(\lambda\), and that is the whole of its economics.

When \(\lambda\) is not the right price for a finite block:

SituationCorrect price
Small block, no limit change\(\lambda\) — error under 0.1%
Large block, no limit change\(\lambda+\frac12(d\lambda/dP_D)\Delta\)
Block crosses a regime boundaryrecompute \(C^*\) at both ends
Block changes the unit commitmentrecompute including start-up costs

The last row can produce enormous values. If shedding 20 MW allows a whole unit to be shut down, the saving includes that unit's no-load cost and its start-up cost — which can make the block worth several times \(\lambda\). This is exactly why demand response is most valuable at the margin of a commitment decision, and why its value is so lumpy.

\(\lambda\) is the exact price of an infinitesimal megawatt-hour and a good price for a finite one, with an error of \(\frac12(d\lambda/dP_D)\Delta\) — provided the block does not cross a regime boundary. When it changes the unit commitment, the true value can be several times \(\lambda\).
Answer\(\Delta C/\Delta P_D \to \lambda = 9.73913\) as \(\Delta\to0\): 9.7339 at −1 MW, 9.7443 at +1 MW, 9.7913 at +10 MW — matching \(\lambda+\frac12(d\lambda/dP_D)\Delta\). A 20 MW shed is worth 9.598 Rs/kWh, or Rs 7.68 lakh for a four-hour event
Problem 15AppliedEffect of Fuel Price

Fuel prices change. Determine how a 20% rise in unit 2's fuel price, and a 20% fall, alter the dispatch and the system price, and establish the general rule.

Solution

How a fuel price enters the cost curve. From Problem 2, \(C = F\times H\), so a change in fuel price scales every coefficient:

\[ F \to kF \quad\Rightarrow\quad (a,b,c) \to (ka,kb,kc) \quad\Rightarrow\quad \text{IC} \to k\,\text{IC} \]

Both the intercept and the slope of the incremental cost line scale together. This is often got wrong: raising \(b\) alone shifts the line without tilting it, which corresponds to no physical change at all.

Unit 2's fuel up 20% (\(k = 1.2\)): its curve becomes \(600+7.44P_2+0.0054P_2^2\), with \(\text{IC}_2 = 7.44+0.0108P_2\) spanning 8.30 to 10.68:

QuantityBaseU2 fuel +20%Change
\(\lambda\)9.739110.2015+4.75%
\(P_1\)41.3056.72+15.4 MW
\(P_2\)300.00255.69−44.3 MW
\(P_3\)158.70187.59+28.9 MW
\(C\)5235.765767.92+10.16%

Unit 2 comes off its maximum — its incremental cost now reaches 10.68 at full load, above the system \(\lambda\), so it is no longer worth loading fully. The other two units take up the 44 MW it sheds.

The cost increase is less than proportional, which is the value of re-dispatching:

\[ \text{if the dispatch were unchanged: } \Delta C = 0.2\times2765.00 = 553.00 \]
\[ \text{with re-dispatch: } \Delta C = 532.16 \quad\Rightarrow\quad \text{saving} = \mathbf{20.84}\ \text{thousand Rs/h} \]

Re-optimising after the price change recovers 3.8% of the increase. This is the general envelope-theorem result: the optimal cost responds less than proportionally to any parameter change, because the allocation adapts — but the recovery is second-order, so it is always modest.

Unit 2's fuel down 20% (\(k = 0.8\)): \(\text{IC}_2 = 4.96+0.0072P_2\), spanning 5.54 to 7.12:

QuantityBaseU2 fuel −20%Change
\(\lambda\)9.73919.7391unchanged
\(P_1, P_2, P_3\)41.30 / 300 / 158.7041.30 / 300 / 158.70unchanged
\(C\)5235.764682.76−10.56%

The dispatch does not move at all. Unit 2 was already at its maximum; making it cheaper cannot make it produce more. The cost falls by exactly \(0.2\times2765.00 = 553.00\) — 20% of unit 2's own cost, to the rupee — and the system price is entirely unaffected.

The asymmetry is the lesson:

Unit's stateFuel price risesFuel price falls
At its maximummay come off the limit; \(\lambda\) risesno effect on dispatch or \(\lambda\)
At its minimumno effect on dispatch or \(\lambda\)may come off the limit; \(\lambda\) falls
Free (marginal)\(\lambda\) rises\(\lambda\) falls

Only marginal plant sets the price. A change in the fuel cost of a unit at a limit changes the bill but not the price — which is why, in a market, a cheap saturated generator captures the full benefit of a fall in its own fuel cost while a marginal one passes it straight to consumers.

Two more sensitivities, for completeness:

Change\(\lambda\)\(P_1/P_2/P_3\)\(\Delta C\)
U1 fuel −20%8.960090.00 / 300 / 110.00−192.76
U3 fuel +10%10.352961.76 / 300 / 138.24+164.45

The first is striking: making the expensive unit 1 cheaper by 20% raises its output from 41 to 90 MW and drops \(\lambda\) from 9.74 to 8.96. A 20% change in one unit's fuel has moved the system price by 8%, because that unit was marginal.

The general sensitivity, for a free unit \(j\):

\[ \frac{\partial\lambda}{\partial k_j} = \frac{\text{IC}_j\big/2c_j}{\sum_{i\ \text{free}}1/2c_i} \]

The price moves in proportion to the unit's own share of the free capacity. A large flat unit (small \(c\)) dominates the price; a small steep one barely affects it. In a national system with hundreds of units, no single fuel contract moves \(\lambda\) perceptibly — but a change in the price of a whole fuel type moves it a great deal.

A fuel price scales every coefficient of the cost curve, so it tilts the incremental cost line rather than shifting it — and it changes the system price only if the unit is marginal. Cheapening a saturated unit changes the bill and not the price; cheapening a marginal one does the reverse.
AnswerU2 fuel +20%: \(\lambda\) 9.7391 → 10.2015, U2 backs off to 255.69 MW, cost +532.16 (re-dispatch saves 20.84 of the 553.00 it would otherwise be). U2 fuel −20%: dispatch and \(\lambda\) unchanged, cost −553.00 exactly — a saturated unit's price change never moves \(\lambda\) downward
Problem 16AppliedPiecewise-Linear Costs

Real cost curves are not quadratics. Approximate unit 2's curve by four linear segments, set out how dispatch is performed with piecewise-linear costs, and assess the error.

Solution

Why the piecewise-linear form is used. Three reasons, all practical:

ReasonComment
It is what generators actually bidmarket rules require a stepped offer curve
It makes the dispatch a linear programsolvable at national scale with network constraints
It represents non-convexities honestlya quadratic cannot show a valve point

The second is decisive for large systems. A quadratic dispatch with a full AC network is a hard nonlinear program; a piecewise-linear one with a DC network is a linear program of a few hundred thousand variables, which solves in seconds.

Segment unit 2's range 80–300 MW into four equal blocks and take the average incremental cost over each:

\[ \text{IC}_{\text{seg}} = \frac{C(P_{hi})-C(P_{lo})}{P_{hi}-P_{lo}} \]
Segment (MW)WidthSegment IC (Rs/kWh)Exact IC at midpoint
80–135557.16757.1675
135–190557.66257.6625
190–245558.15758.1575
245–300558.65258.6525

The segment incremental cost equals the exact incremental cost at the midpoint — exactly, not approximately. That is a property of quadratics: the average slope over an interval is the slope at its centre. So the piecewise approximation is a set of chords touching the true incremental cost line at four points.

Dispatch with piecewise-linear costs is pure merit order. Each segment of each unit is a block with a fixed price; load the cheapest blocks first:

RankBlockMWPriceCumulative MW
minima (U1 40, U2 80, U3 60)180must-run180
1U2 seg 1557.1675235
2U2 seg 2557.6625290
3U3 seg 1358.2400325
4U2 seg 3558.1575

Ranked strictly by price, block 4 (8.1575) precedes block 3 (8.2400). The merit stack interleaves the units' segments, which is exactly what equal-\(\lambda\) dispatch does continuously — merit order over segments is the discrete form of the equal-incremental-cost rule.

The price is set by the marginal block, and this is where the two formulations differ:

\[ \text{quadratic: } \lambda \text{ varies continuously} \qquad \text{piecewise: } \lambda \text{ jumps between segment prices} \]

A piecewise-linear dispatch gives a step price curve — the price stays at 7.6625 for an entire 55 MW block, then jumps to 8.1575. Real markets show exactly this behaviour, and it is why spot prices sit on plateaux and then move abruptly.

The approximation error, assessed by comparing the two dispatches at 400 MW:

Model\(P_1/P_2/P_3\)\(C\)Error
Exact quadratic40.00 / 270.40 / 89.604328.85
4 segments40.00 / 272.50 / 87.504329.05+0.005%
2 segments40.00 / 245.00 / 115.004335.20+0.15%

Four segments give an error of five thousandths of one per cent. Even two segments cost only 0.15%. The error falls as the square of the segment width, for the same reason the misallocation penalty of Problem 12 was quadratic — so doubling the number of segments quarters the error.

How many segments are needed in practice:

ApplicationSegments per unit
Textbook illustration1 (constant IC)
Market bidding (typical rules)5–10
Security-constrained unit commitment3–5
Detailed production costing10–20

Note that market rules usually cap the number of segments, not to limit the accuracy but to limit the scope for strategic bidding — a generator with a hundred segments can shape its offer curve far more finely than one with five, and that flexibility is worth money to it and costs the consumer.

One requirement the segments must satisfy:

\[ \text{IC}_{\text{seg }1} < \text{IC}_{\text{seg }2} < \cdots \qquad\text{(monotonically increasing)} \]

This is the discrete statement of convexity, and market rules enforce it. A non-monotonic offer curve would allow a generator to be dispatched to a locally cheap block while skipping a dearer one below it — which breaks the merit-order logic entirely and turns the linear program into a mixed-integer one.

With piecewise-linear costs, equal-\(\lambda\) dispatch is merit order over segments — and the segment prices interleave between units. Four segments reproduce the quadratic answer to five thousandths of one per cent, which is why every real market runs on stepped offer curves.
AnswerSegment ICs 7.1675 / 7.6625 / 8.1575 / 8.6525 Rs/kWh, each equal to the exact IC at the segment midpoint. Dispatch becomes merit order over interleaved blocks; four segments give an error of 0.005%, two segments 0.15%. Segment prices must be monotonically increasing
Problem 17AdvancedValve Points

A steam turbine's admission valves open in sequence, producing a rippled cost curve. Model the effect for unit 2, explain why it destroys the equal-incremental-cost argument, and describe what is done about it.

Solution

The physical cause. A large steam turbine admits steam through four to eight nozzle groups, each with its own valve:

ConditionEffect on efficiency
A valve just fully openbest — no throttling loss
A valve partly openthrottling across the valve wastes enthalpy
Just before the next valve opensworst — maximum throttling

So the heat rate does not vary smoothly. It sags to a local minimum each time a valve reaches full opening, then climbs as the next valve is cracked open — one ripple per valve across the load range.

The standard model adds a rectified sinusoid to the smooth curve:

\[ C(P) = a+bP+cP^2+\left|e\sin\!\left[f\left(P^{\min}-P\right)\right]\right| \]

with \(e\) the ripple amplitude and \(f\) setting its period. Taking \(e = 30\) thousand Rs/h and \(f = 0.045\) per MW for unit 2 gives a period of \(2\pi/f = 139.6\) MW — about 1.6 ripples across its 220 MW range, corresponding to a two-valve machine.

The rippled curve:

\(P\) (MW)Smooth \(C\)With valvesRipple
801024.801024.800.00
1001165.001188.50+23.50
1501531.251531.50+0.25
2001920.001943.18+23.18
2502331.252360.63+29.38
3002765.002778.73+13.73

The ripple is at most 1.3% of the cost — small in itself, but its derivative is not small, and that is what matters.

Why it destroys the argument. Differentiating:

\[ \frac{dC}{dP} = b+2cP \mp ef\cos\!\left[f\left(P^{\min}-P\right)\right] \]
\[ ef = 30\times0.045 = 1.35\ \text{Rs/kWh of ripple in the incremental cost} \]

Against a smooth incremental cost spanning 6.92 to 8.90, a ripple of \(\pm1.35\) is enormous. The incremental cost curve is no longer monotonic — it rises, falls, and rises again — so the equation \(\text{IC}(P) = \lambda\) can have several solutions, and the cost function is no longer convex.

The consequences:

PropertyConvex caseWith valve points
Solutions of \(\text{IC} = \lambda\)oneseveral
Local optimum is globalyesno
Lambda iteration convergesalwaysto a solution, not the best
Aggregate \(P(\lambda)\) monotonicyesno

The last row is the practical killer: lambda iteration relies on monotonicity for its guaranteed convergence, and with valve points that guarantee is gone. The method may oscillate or land on a poor local optimum.

What is done about it. Four approaches, in ascending order of sophistication:

ApproachMethodComment
Ignore ituse the smooth fiterror 0.1–0.5%; usual practice
Operate at valve pointsrestrict output to the local optimadiscrete setpoints; loses fine control
Piecewise-linear with integersmixed-integer linear programexact, and solvable
Metaheuristicsgenetic algorithm, PSO, differential evolutiona large research literature

The first row is what most utilities actually do, and it is defensible: the ripple is a genuine physical effect but the fitted smooth curve passes through the middle of it, so the error is bounded by half the ripple amplitude. The fourth row is the subject of hundreds of papers, most of which compare algorithms on the same three-unit and thirteen-unit test systems — a substantial literature built on a 0.3% effect.

The second approach is the one used in practice where it matters:

\[ \text{operate only at } P \in \{\text{valve points}\} \quad\Rightarrow\quad \text{best heat rate, no throttling loss} \]

A unit run continuously at base load is set at a valve point deliberately, and the regulating duty is given to another machine. This is why "valve-point loading" appears in operating instructions, and why a base-load unit's output is often a peculiar number like 273 MW rather than a round 275.

A ripple of 1.3% in the cost curve becomes a ripple of \(\pm1.35\) Rs/kWh in the incremental cost — larger than the whole range of the smooth curve. Differentiation amplifies small non-convexities enormously, which is why a barely visible wiggle destroys the uniqueness of the optimum.
AnswerModel \(|e\sin[f(P^{\min}-P)]|\) with \(e = 30\), \(f = 0.045\): cost ripple up to 1.3%, but incremental-cost ripple \(\pm ef = \pm1.35\) Rs/kWh. The IC curve becomes non-monotonic, \(\text{IC} = \lambda\) has several roots, and lambda iteration loses its convergence guarantee
Problem 18AdvancedUnit Commitment

Determine which units should be running at each demand from 180 to 450 MW, quantify the saving over running all three, and set out why the problem is fundamentally harder than dispatch.

Solution

Why it is a different problem. Dispatch takes the committed set as given and optimises continuously; commitment optimises over a discrete set:

PropertyDispatchCommitment
Variablescontinuous \(P_i\)binary \(u_i \in \{0,1\}\) and continuous \(P_i\)
No-load costirrelevantcentral
Solution methodlambda iterationmixed-integer programming
Combinations1\(2^n-1\) per hour
Couples across time?noyes — start-up, min run/down times

The last two rows are why commitment is hard. With 100 units over 24 hours there are \(2^{2400}\) possible schedules, and the time coupling means they cannot be evaluated hour by hour.

Enumerate for three units. With only seven combinations, exhaustive search is trivial:

\(P_D\)Best setCost\(\lambda\)All threeSavingRs lakh/yr
180U21761.807.82002599.60837.8073.4
200U21920.008.00002739.80819.8071.8
250U22331.258.45003106.05774.8067.9
300U22765.00at max3494.80729.8063.9
320U2+U33274.118.40323656.59382.4833.5
350U2+U33528.808.57603904.37375.5732.9
400U2+U33964.808.86404328.85364.0531.9
450U2+U34425.009.60004767.80342.8030.0

Unit 2 alone serves up to 300 MW — its own maximum. From 300 to 450 MW, unit 2 and unit 3 suffice, and unit 1 is not needed at all. Above 450 MW all three must run, since \(300+200 = 500\) is the two-unit ceiling and reserve considerations bite before then.

The savings are an order of magnitude larger than dispatch savings:

\[ \text{commitment: up to } 838\ \text{thousand Rs/h} \qquad \text{dispatch: at most } 142\ \text{thousand Rs/h} \]

Six times more. And the reason is exactly the no-load cost: shutting down units 1 and 3 removes \(350+400 = 750\) thousand Rs/h of fuel that was buying nothing. Getting the commitment right is worth far more than getting the dispatch right, which is why modern system operation solves them together and why the dispatch problem is, in a sense, the easy half.

The simple decision rule for whether to keep a unit running, ignoring time coupling:

\[ \text{shut down unit } j \text{ if } \ C_j(P_j)-\left[C^*_{\text{without }j}(P_D)-C^*_{\text{without }j}(P_D-P_j)\right] > 0 \]

In words: the unit is worth running only if its own cost is less than what the remaining units would charge for the same output. At \(P_D = 300\), unit 3 at its 60 MW minimum costs 860.80, while unit 2 would supply that 60 MW for about 435 — so unit 3 should be shut down, as the table says.

What the simple rule omits — start-up cost. Restarting a shut-down unit is expensive:

Unit stateStart-up costReason
Hot (down < 8 h)1000–3000fuel to re-raise steam
Warm (8–48 h)3000–8000plus a longer soak
Cold (> 48 h)8000–20 000full boiler warm-through, 8–12 h

In thousand Rs, for a unit of this size. Taking a warm start of 8000 for unit 3, and a saving of 364.60 thousand Rs/h while it is off:

The break-even down time:

\[ t^* = \frac{\text{start-up cost}}{\text{saving per hour}} = \frac{8000}{364.60} = \mathbf{21.9\ hours} \]

So shutting unit 3 down is worthwhile only if it will stay off for more than 22 hours. Since the demand at 300 MW lasts only the six overnight hours of the Set 26 load curve, the unit should not be shut down at all — the hour-by-hour analysis of the table above is misleading, and this is precisely the time coupling that makes commitment a scheduling problem rather than an hourly one.

The other time-coupled constraints:

ConstraintTypical valueReason
Minimum up time4–24 hthermal stress on drums and rotors
Minimum down time4–12 hcontrolled cooling
Ramp rate1–5% of rating per minutedifferential expansion
Start-up ramp2–12 h to full loadboiler warm-through
Number of starts per yearlimited by fatigue lifeeach start consumes creep-fatigue life

The last is often decisive and rarely modelled explicitly: a large drum boiler is designed for a few thousand starts over forty years, and cycling a base-load unit daily consumes that budget in a decade. The cost is real but appears only as a shortened plant life, which is why it is usually converted into a notional start-up cost rather than a constraint.

How the problem is actually solved at scale:

MethodEraComment
Priority list1960s–rank by full-load average cost; still used as a check
Dynamic programming1970s–80sexact for small systems; exponential in units
Lagrangian relaxation1980s–2000sdecouples units; gives a bound, not the optimum
Mixed-integer linear programming2000s–the current standard — exact, and fast enough

MILP won because commercial solvers improved by roughly a factor of a million between 1990 and 2015 — about half from algorithms and half from hardware. A security-constrained unit commitment over 24 hours with 1000 units and 10 000 network constraints now solves to within 0.1% of optimal in under twenty minutes, which was inconceivable when Lagrangian relaxation was devised.

Commitment saves six times what dispatch does, because shutting a unit down removes its whole no-load cost. But a start-up cost of 8000 against a saving of 365 per hour means the unit must stay off for 22 hours to be worth stopping — which is why the decision cannot be taken hour by hour.
AnswerU2 alone up to 300 MW, U2+U3 from 300 to 450 MW, all three above. Savings 838 down to 343 thousand Rs/h — six times the dispatch saving. But with a warm start of 8000, the break-even down time is 21.9 hours, so on a daily load cycle unit 3 should stay synchronised
Problem 19AppliedMust-Run Constraints

Real dispatch is not free to choose. Enumerate the constraints that force units to run or to hold particular outputs, and quantify what one of them costs.

Solution

The categories of must-run constraint:

CategoryExampleEffect on dispatch
Reservespinning reserve of one largest unitcaps output below \(P^{\max}\)
Voltage supporta unit needed for reactive power locallyforces it on, often at minimum
Transmission securitya unit behind a constrained corridorforces it on, sometimes at high output
System inertiaminimum synchronous machines onlineforces a count, not an output
Contractualtake-or-pay fuel; must-run PPAforces a minimum energy
Cogenerationsteam host requires process heatoutput set by the heat load
Environmentalemission cap; cooling-water temperaturecaps output or hours

The third and fourth rows have grown enormously in importance. As renewable generation displaces synchronous plant, system operators increasingly run thermal units purely for inertia and short-circuit level — paying fuel for a service that has nothing to do with energy.

How a must-run constraint enters the dispatch. It simply raises the unit's lower limit:

\[ P_j^{\min} \to P_j^{\text{must-run}} \quad\Rightarrow\quad \text{IC}_j \ge \lambda \ \text{at the new limit} \]

Nothing else in the method changes. The unit is pinned, the remaining demand is dispatched among the others, and the cost of the constraint is the difference between the constrained and unconstrained optima.

Worked example — reserve. Require 50 MW of spinning reserve at \(P_D = 500\) MW. Reserve must come from headroom on synchronised units:

\[ \sum_i\left(P_i^{\max}-P_i\right) \ge 50 \]

In the base dispatch the headroom is \((120-41.30)+(300-300)+(200-158.70) = 78.7+0+41.3 = 120\) MW — comfortably above 50, so the constraint is not binding. It becomes binding only above 570 MW.

Worked example — voltage support. Suppose unit 1 must run at a minimum of 80 MW rather than 40 for local voltage support at \(P_D = 500\):

Case\(P_1\)\(P_2\)\(P_3\)\(\lambda\)\(C\)
Unconstrained41.30300.00158.709.73915235.76
\(P_1 \ge 80\)80.00300.00120.009.12005259.20
\[ \text{cost of the constraint} = 5259.20-5235.76 = \mathbf{23.44}\ \text{thousand Rs/h} \]

Rs 23 440 an hour, or Rs 2.05 crore a year if permanent. Note that \(\lambda\) falls from 9.74 to 9.12: forcing an expensive unit up displaces a cheaper one, and the marginal unit — now unit 3 alone — is further down its curve.

That is a general and counter-intuitive result:

\[ \text{a must-run constraint raises the total cost but usually lowers } \lambda \]

Because the forced generation displaces marginal generation, leaving less for the free units to supply. In a market this produces the familiar situation where the spot price is depressed by out-of-merit running, while the total system cost — recovered through uplift charges — rises. Consumers see a low price and a large uplift bill, and the two move in opposite directions.

Cogeneration is the constraint that changes the problem most fundamentally:

\[ \text{a back-pressure set: } P_{\text{elec}} = \kappa\,Q_{\text{heat}} \quad\text{— output entirely determined by the heat load} \]

Such a unit has no dispatch freedom at all in electrical terms and enters as a fixed injection. An extraction-condensing set has partial freedom, described by a two-dimensional feasible region in the \((P,Q)\) plane rather than a line — and its dispatch requires a two-dimensional generalisation of the equal-\(\lambda\) rule, with a separate multiplier for the heat balance.

How much of a real dispatch is actually free? A representative breakdown:

CategoryShare of capacity
Must-run: nuclear, run-of-river, renewables30–50%
Must-run: security and voltage support5–15%
Contractually fixed10–20%
Genuinely free to optimise20–40%

Only a minority of the fleet is actually dispatchable in the sense this chapter assumes. That does not diminish the theory — the free fraction is where all the marginal decisions are made, and it is what sets the price for everything else.

A must-run constraint raises the total cost but usually lowers \(\lambda\), because forced generation displaces marginal generation. That is why a market can show low prices and high uplift simultaneously, and why the spot price alone is a poor measure of how expensively a system is being run.
AnswerA must-run constraint raises \(P_j^{\min}\) and nothing else changes in method. Forcing \(P_1 \ge 80\) at \(P_D = 500\) costs 23.44 thousand Rs/h (Rs 2.05 crore/yr) and lowers \(\lambda\) from 9.7391 to 9.1200. Typically only 20–40% of a real fleet is free to optimise
Problem 20AdvancedA Complete Dispatch Study

Carry out a complete daily dispatch study for the three-unit station serving the load curve of Set 26 scaled to this station, including commitment, and set out the verification checks.

Solution

Step 1 — the load. Scaling Set 26's daily curve so the peak is 500 MW:

PeriodHours\(P_D\) (MW)Energy (MWh)
00–0662001200
06–082250500
08–1244001600
12–142350700
14–1844501800
18–2245002000
22–242250500
Total248300

Load factor \(= 8300/(500\times24) = 0.6917\). All demands lie within the station's 180–620 MW range with all three units committed.

Step 2 — the commitment decision. From Problem 18, unit 1 is not needed below 450 MW and unit 3 not below 300 MW. But the start-up analysis showed a 22-hour break-even:

OptionHours unit 1 offFuel savingStart-up costNet
All three all day0baseline
Unit 1 off 00–14 (14 h)1449268000−3074
Unit 1 off 22–14 (16 h)1656208000−2380

Both shut-down options lose money, because the overnight trough is not long enough. All three units stay synchronised for the whole day — which is exactly the answer a naive hourly analysis would have got wrong.

Step 3 — the hourly dispatch:

Period\(P_D\)\(\lambda\)\(P_1\)\(P_2\)\(P_3\)\(C\) (per h)Cost (period)
00–062007.100040.00100.0060.002739.8016 438.8
06–082507.550040.00150.0060.003106.056 212.1
08–124008.633640.00270.4089.604328.8517 315.4
12–143508.345640.00238.4071.603904.377 808.7
14–184508.960040.00300.00110.004767.8019 071.2
18–225009.739141.30300.00158.705235.7620 943.0
22–242507.550040.00150.0060.003106.056 212.1
Total94 001.3

Rs 9.40 crore per day, for 8300 MWh — an average of Rs 11.325 per kWh. Note this exceeds every individual period's average except the two cheapest, because the low-demand hours carry three units' no-load costs on very little output.

Step 4 — the energy split:

UnitEnergy (MWh)ShareCapacity factorCost share
U1965.211.6%0.33519.0%
U24881.658.8%0.67848.4%
U32453.229.6%0.51132.6%

Unit 1 produces 11.6% of the energy and incurs 19.0% of the cost — the expensive unit is over-represented in the bill, which is the whole point. Unit 2 is the reverse: 58.8% of the energy for 48.4% of the cost.

Step 5 — the marginal unit through the day, which is what a market would price:

PeriodMarginal unit\(\lambda\)
00–08, 22–24U27.10–7.55
08–14U2 and U38.35–8.63
14–18U38.96
18–22U1 and U39.74

The price ranges from 7.10 to 9.74 Rs/kWh across the day — a factor of 1.37, which is modest because this station's units are similar. On a real system with hydro, nuclear and gas turbines the daily price range is a factor of three to ten.

Step 6 — the verification checks. Six identities, each independent of what it checks:

CheckExpectedFound
Hours sum246+2+4+2+4+4+2 = 24 ✓
Outputs sum to demandeach periodall seven ✓
Energies sum8300 MWh965.2+4881.6+2453.2 = 8300.0 ✓
Free units share \(\lambda\)equal ICsall periods ✓
Units at limits satisfy inequalities\(\le\) at max, \(\ge\) at minall ✓
\(\lambda\) monotone in \(P_D\)increasing7.10 < 7.55 < 8.35 < 8.63 < 8.96 < 9.74 ✓

The fifth is the one that most often fails in a hand calculation and is easiest to check: at 450 MW, unit 1 at its 40 MW minimum has \(\text{IC} = 9.70 \ge \lambda = 8.96\) ✓ and unit 2 at its 300 MW maximum has \(\text{IC} = 8.90 \le 8.96\) ✓.

Step 7 — the value of the exercise. Comparing with three cruder policies over the whole day:

PolicyDaily costExcessAnnual (Rs crore)
Optimal dispatch94 001
Merit order by \(b_i\)94 062+0.06%+0.02
Pro-rata capacity96 730+2.90%+1.00
Equal sharing where feasible97 850+4.09%+1.41

Rs 1.4 crore a year for one small station, from a calculation that takes microseconds. Scaled to a national fleet of two hundred such stations, the figure is measured in hundreds of crores — which is the answer to anyone who asks whether a 0.06% improvement is worth the trouble.

Step 8 — what has been assumed away, and what Set 28 restores:

AssumptionRestored in
All units at one bus; no transmissionSet 28
No transmission lossesSet 28
No network constraintssecurity-constrained dispatch
No ramp-rate limitsmulti-period dispatch
Perfect load forecaststochastic unit commitment
Convex cost curvesProblem 17

The first two are the subject of the next chapter, and they change the criterion in a specific way: with losses, a megawatt generated at a remote bus delivers less than a megawatt to the load, so the equal-incremental-cost rule becomes equal penalised incremental cost, and the whole load-flow machinery of Part 4 re-enters the economics.

One day, one station: Rs 9.40 crore of fuel, an average of Rs 11.325 per kWh, a price ranging from 7.10 to 9.74, and Rs 1.4 crore a year saved over the crudest sensible policy. Every number came from one condition — that the free units share a common incremental cost.
AnswerAll three units committed all day (start-up cost exceeds the trough saving). Daily cost Rs 94 001 thousand = 9.40 crore for 8300 MWh, an average of Rs 11.325/kWh; \(\lambda\) ranges 7.10–9.74. Energy split 11.6 / 58.8 / 29.6%; all six consistency checks pass

Practice Problems

Twelve problems on economic dispatch. Problems 1 and 3–5 use a small two-unit station of their own; Problems 5–12 return to the three-unit station of the worked set (costs in thousand Rs/h with \(P\) in MW, so incremental costs come out directly in Rs/kWh). Solve each one before opening the answer.

1. Two units have \(C_1 = 300+20P_1+0.05P_1^2\) and \(C_2 = 400+16P_2+0.08P_2^2\) Rs/h, with no binding limits. Dispatch 250 MW economically and find the saving over an equal split.

Answer

\(\mathrm{IC}_1 = 20+0.10P_1\), \(\mathrm{IC}_2 = 16+0.16P_2\). Setting both to \(\lambda\): \(P_1 = 10(\lambda-20)\), \(P_2 = 6.25(\lambda-16)\), and \(16.25\lambda = 550\) gives \(\lambda = \) Rs 33.846/MWh, \(P_1 = \) 138.46 MW, \(P_2 = \) 111.54 MW. Cost Rs 7207.69/h against Rs 7231.25/h for 125 MW each — a saving of Rs 23.56/h (0.33%). Note the cheaper unit (lower \(b\)) takes less, because its curve is steeper.

2. A unit's heat input is \(H = 30+1.90P+0.0025P^2\) Gcal/h for \(40\le P\le 200\) MW. Find the heat rate and thermal efficiency at 40 and 160 MW, the output of minimum heat rate, and the incremental heat rate at that output.

Answer

At 40 MW: \(H = 110.0\) Gcal/h, \(\mathrm{HR} = 2.7500\) Gcal/MWh, \(\eta = 0.86/2.75 = \) 31.27%. At 160 MW: \(H = 398.0\), \(\mathrm{HR} = 2.4875\), \(\eta = \) 34.57%. Minimum heat rate where \(d(30/P+1.90+0.0025P)/dP = 0\), i.e. \(P = \sqrt{30/0.0025} = \) 109.54 MW, giving \(\mathrm{HR} = 2.4477\) and \(\eta = \) 35.13%. There \(\mathrm{IHR} = 1.90+0.005(109.54) = \) 2.4477 Gcal/MWh — identical to the heat rate, which is the general property of the minimum-heat-rate point.

3. Coal costs Rs 3200/tonne with a calorific value of 4500 kcal/kg. Convert the unit of Problem 2 to a rupee cost curve and find its incremental cost at 120 MW.

Answer

One tonne yields 4.5 Gcal, so fuel costs \(3200/4.5 = \) Rs 711.11 per Gcal. Multiplying through: \(C = 21\,333+1351.1P+1.7778P^2\) Rs/h. Then \(\mathrm{IC} = 1351.1+3.5556(120) = 1777.8\) Rs/MWh \(= \) Rs 1.778/kWh. The fuel price scales all three coefficients — a point Problem 15 of the worked set turns on.

4. Units with \(C_1 = 200+7.0P_1+0.008P_1^2\) and \(C_2 = 180+6.3P_2+0.009P_2^2\) (thousand Rs/h) have limits \(30\le P_1\le 100\) and \(50\le P_2\le 150\). Dispatch (a) 200 MW and (b) 230 MW.

Answer

(a) Ignoring limits, \(\lambda = \) 8.3647, \(P_1 = 85.29\), \(P_2 = 114.71\) — both inside their ranges, so this is the answer. (b) The unconstrained solution gives \(P_1 = 111.8 > 100\). Fix \(P_1 = 100\), so \(P_2 = 130\) and \(\lambda = \mathrm{IC}_2 = 6.3+0.018(130) = \) 8.6400. Check the sign: \(\mathrm{IC}_1 = 8.60 \le \lambda\) ✓ — a unit stuck at its upper limit must be the cheaper one at the margin.

5. For the three-unit station of the worked set, compare the optimum dispatch of 500 MW with a pro-rata split in the ratio of the units' capacities.

Answer

Total capacity 620 MW, so pro-rata gives \(P = 96.77 / 241.94 / 161.29\) MW at a cost of 5345.86 against the optimum 5235.76 — an excess of 110.10 thousand Rs/h, or 2.10%. (An equal three-way split is not even feasible: 166.67 MW exceeds unit 1's 120 MW limit.) At 400 MW the pro-rata excess is 99.92, or 2.31%.

6. A different station has \(C_A = 500+5.3P+0.004P^2\) (50–200 MW), \(C_B = 400+5.5P+0.006P^2\) (40–150 MW) and \(C_C = 200+5.8P+0.009P^2\) (30–100 MW). Dispatch 300 MW and 400 MW.

Answer

At 300 MW: \(\lambda = \) 6.6053 with \(P = 163.16 / 92.11 / 44.74\), cost 2906.18. At 400 MW: the free solution wants \(P_A = 213.2 > 200\), so \(P_A = 200\) and the remaining 200 MW is shared by B and C at \(\lambda = \) 7.0600, giving \(P = 200 / 130 / 70\) and cost 3586.50. Check \(\mathrm{IC}_A = 5.3+0.008(200) = 6.90 \le 7.06\) ✓.

7. The station of the worked set is carrying 500 MW. A neighbouring utility offers a firm block of 50 MW. Above what price should the offer be refused, and how does the break-even price depend on the block size?

Answer

Buying 50 MW lets own generation fall to 450 MW, costing 4767.80 instead of 5235.76 — a saving of 467.96. The break-even price is \(467.96/50 = \) Rs 9.3592/kWh. For a 25 MW block it is 9.5584 and for 100 MW it is 9.0691. The break-even price falls as the block grows, and every one of them is below \(\lambda = 9.7391\): \(\lambda\) prices the next megawatt, not an average over a finite block, so using \(\lambda\) to value a large block overstates the benefit.

8. Unit 3's fuel price rises 15%. Re-dispatch 500 MW and find how much of the extra cost re-dispatching recovers.

Answer

Scale \(a_3,b_3,c_3\) by 1.15. New solution: \(\lambda = \) 10.6446, \(P = 71.49 / 300 / 128.51\), cost 5475.33 — up 239.57 on the base 5235.76. Holding the old dispatch would have cost 5497.37, so re-dispatching recovers only 22.05 thousand Rs/h, about 9% of the increase. Unit 3 backs off 30 MW and unit 1 picks it up; unit 2 stays pinned at its maximum throughout.

9. At what demands is it worth committing all three units rather than only units 2 and 3? Compare running costs at 200, 300, 400 and 500 MW.

Answer
\(P_D\) (MW)U2+U3All threePenalty
2002317.02739.8422.8
3003107.23494.8387.6
4003964.84328.9364.1
5004925.05235.8310.8

Never, on running cost alone — unit 1 is dearer at every demand it is not needed for, and the penalty is essentially its no-load cost of 350 plus the distortion of forcing 40 MW onto it. Units 2 and 3 together cover up to 500 MW, so unit 1 is required only above that. The penalty shrinks with load, which is why the break-even down time against a start-up cost matters more than any single snapshot.

10. Two units are offered as blocks: A as 60 MW at 6.0, 60 MW at 7.0 and 60 MW at 8.5 Rs/kWh; B as 100 MW at 6.5 and 100 MW at 7.8. Dispatch 280 MW and identify the marginal price.

Answer

Merit order: A1 (6.0), B1 (6.5), A2 (7.0), B2 (7.8), A3 (8.5). Filling in order: A1 = 60, B1 = 100, A2 = 60, then 60 of B2's 100. So \(P_A = \) 120 MW, \(P_B = \) 160 MW, cost 1898.0 thousand Rs/h. The marginal block is B2, so \(\lambda = \) Rs 7.80/kWh. Only one block is ever partly loaded at the optimum — the discrete analogue of "only the free units sit at \(\lambda\)".

11. What is \(\lambda\) at the two ends of the worked station's range, 180 MW and 620 MW?

Answer

It is not defined at either end. At 180 MW every unit sits at its minimum, so the equality constraint is met without any unit being free; \(\lambda\) can be anything up to 6.92 (the lowest incremental cost, unit 2's at its minimum) and the Kuhn–Tucker conditions still hold. At 620 MW all three are at maximum and \(\lambda\) is anything above 12.10. Physically: at the floor no unit can be backed off, so an extra megawatt of demand is free of re-dispatch cost until 180 MW is exceeded; at the ceiling no unit can be pushed harder, so the marginal price is set by whatever the demand must be cut with — a scarcity price, not a fuel cost.

12. A day's load duration curve is approximated by five blocks: 250 MW for 6 h, 320 for 5 h, 400 for 5 h, 480 for 5 h and 560 for 3 h. Find the daily energy, load factor, fuel cost and average cost, with all three units committed.

Answer
\(P_D\)h\(\lambda\)\(P_1/P_2/P_3\)CBlock cost
25067.550040.0 / 150.0 / 60.03106.0518 636.3
32058.172840.0 / 219.2 / 60.83656.5918 283.0
40058.633640.0 / 270.4 / 89.64328.8521 644.2
48059.440040.0 / 300.0 / 140.05043.8025 219.0
560310.365262.2 / 300.0 / 197.85838.8917 516.7

Energy \(= \) 9180 MWh; load factor \(= 9180/(24\times560) = \) 0.6830; daily cost 101 299 thousand Rs = Rs 10.13 crore; average cost Rs 11.035/kWh. The average is far above every \(\lambda\) in the table because the fixed terms \(a_i = 350+500+400 = 1250\) thousand Rs/h are spread over the energy — Rs 3.27/kWh of the average is no-load cost alone.

Challenge Problems

Three extended investigations: the complete \(\lambda(P_D)\) characteristic of a station and what its integral means, a daily unit-commitment problem in which the cheapest running cost is not the cheapest schedule, and a market study of what dispatch prices actually pay for.

Challenge 1The Complete \(\lambda(P_D)\) Characteristic

For the three-unit station, construct \(\lambda(P_D)\) in closed form over the whole range 180–620 MW. Identify every breakpoint, give the slope in each segment, prove that \(C(P_D)\) is convex, and verify numerically that \(\int\lambda\,dP_D\) reproduces the cost.

Step 1 — where the breakpoints must be. A breakpoint occurs whenever a unit reaches a limit, and a unit reaches a limit at one specific value of \(\lambda\), namely its own incremental cost there:

\[ \lambda_i^{\min} = b_i+2c_iP_i^{\min}, \qquad \lambda_i^{\max} = b_i+2c_iP_i^{\max} \]
Event\(\lambda\) (Rs/kWh)\(P_D\) (MW)
U2 leaves its minimum6.92180.00
U3 leaves its minimum8.16317.78
U2 reaches its maximum8.90446.25
U1 leaves its minimum9.70496.25
U3 reaches its maximum10.40563.33
U1 reaches its maximum12.10620.00

The \(\lambda\) column is fixed by the cost curves alone, before any dispatch is computed — this is what makes the whole characteristic constructible by hand. The \(P_D\) column follows by evaluating \(P_D(\lambda) = \sum_i \mathrm{clip}\!\left[(\lambda-b_i)/2c_i\right]\) at each of those six values. Notice the six events fall in strictly increasing order of \(\lambda\), so the segments never overlap.

Step 2 — the slope in each segment. Inside a segment the set of free units \(\mathcal{F}\) does not change, and each free unit contributes \(dP_i/d\lambda = 1/2c_i\):

\[ \frac{dP_D}{d\lambda} = \sum_{i\in\mathcal{F}}\frac{1}{2c_i} \qquad\Longrightarrow\qquad \boxed{\;\frac{d\lambda}{dP_D} = \left(\sum_{i\in\mathcal{F}}\frac{1}{2c_i}\right)^{-1}} \]
\(P_D\) range (MW)Free units\(\sum 1/2c_i\)\(d\lambda/dP_D\)
180.00 – 317.78U2111.1110.009000
317.78 – 446.25U2, U3173.6110.005760
446.25 – 496.25U362.5000.016000
496.25 – 563.33U1, U395.8330.010435
563.33 – 620.00U133.3330.030000

The slope is not monotonic — it falls from 0.0090 to 0.0058 when U3 joins, then jumps to 0.0160 when U2 saturates. Adding a free unit always flattens the characteristic (one more term in the sum); losing one always steepens it. The station is at its most price-elastic between 318 and 446 MW, where two units are free at once.

Step 3 — \(\lambda(P_D)\) assembled. Each segment is a straight line through its left-hand breakpoint:

\[ \lambda(P_D) = \begin{cases} 6.9200+0.009000\,(P_D-180.00), & 180.00\le P_D\le 317.78\\[2pt] 8.1600+0.005760\,(P_D-317.78), & 317.78\le P_D\le 446.25\\[2pt] 8.9000+0.016000\,(P_D-446.25), & 446.25\le P_D\le 496.25\\[2pt] 9.7000+0.010435\,(P_D-496.25), & 496.25\le P_D\le 563.33\\[2pt] 10.4000+0.030000\,(P_D-563.33), & 563.33\le P_D\le 620.00 \end{cases} \]

Spot check at \(P_D = 500\): \(\lambda = 9.70+0.010435(3.75) = 9.7391\) — exactly the value found by iteration in Problem 10. The whole dispatch of the station, for any demand, is now available without solving anything: read \(\lambda\) off this formula and clip each unit.

Step 4 — convexity. Two facts do it. First, \(\lambda(P_D)\) is continuous: at each breakpoint the unit that enters or leaves does so at its limit, contributing nothing discontinuous to \(P_D\). Second, every slope is positive. Hence

\[ \frac{dC}{dP_D} = \lambda(P_D) \ \text{ is continuous and non-decreasing} \quad\Longrightarrow\quad C(P_D) \text{ is convex} \]

The first equality is the envelope theorem — the Lagrange multiplier of Problem 6 is the derivative of the optimal cost. Convexity is what guarantees that lambda iteration cannot land on a local minimum and that the marginal price rises with demand; both properties fail the moment valve points (Problem 17) are admitted, because then \(\lambda(P_D)\) is no longer monotonic.

Step 5 — the integral check. If \(dC/dP_D = \lambda\), then the area under the characteristic must be a cost difference. Integrating the five straight-line pieces from 180 to 500 MW:

\[ \int_{180}^{500}\lambda(P_D)\,dP_D = 2636.16 \qquad\text{against}\qquad C(500)-C(180) = 5235.76-2599.60 = 2636.16 \]

Agreement to every figure carried. This is the strongest single check available on a dispatch calculation: it ties together the cost function, the multiplier and the limit handling, and it fails if any of the breakpoints or slopes is wrong. It is also the practical basis for the trapezoidal "production costing" used on load duration curves — integrate \(\lambda\) against the duration curve and the fuel bill falls out.

Step 6 — what the characteristic is used for. Three things, all of them daily practice in a control room:

UseWhat is read off
Spot price\(\lambda(P_D)\) directly
Value of an import or a loss reduction\(\lambda\), for small quantities; \(\Delta C/\Delta P_D\) for blocks
Station bid curve in a poolthe whole curve, offered as the station's supply function

In a competitive pool the station's honest offer is this curve, and the pool's clearing price is the intersection of the summed offer curves with demand — which is the same equal-\(\lambda\) calculation done across owners instead of within one. That equivalence is the theoretical justification for marginal-cost pools.

The whole dispatch of a station is one piecewise-linear function \(\lambda(P_D)\), with breakpoints fixed by the units' incremental costs at their limits and slopes equal to the reciprocal of \(\sum 1/2c_i\) over the free units. Its integral is the fuel cost, and its monotonicity is exactly the convexity that makes lambda iteration safe.
AnswerFive segments with breakpoints at 180, 317.78, 446.25, 496.25, 563.33 and 620 MW, slopes 0.00900, 0.00576, 0.01600, 0.010435 and 0.03000 Rs/kWh per MW; \(\lambda\) continuous and increasing, so \(C(P_D)\) is convex, and \(\int_{180}^{500}\lambda\,dP_D = \mathbf{2636.16} = C(500)-C(180)\) exactly
Challenge 2A Daily Commitment with Start-up Costs

The station meets a daily load of 200 MW (00–04), 260 (04–08), 420 (08–12), 380 (12–16), 480 (16–20), 560 (20–22) and 300 MW (22–24). Start-up costs are 8000 (U1), 20 000 (U2) and 5000 (U3) thousand Rs. Find the least-cost commitment for a repeating daily cycle, and compare it with three plausible alternatives.

Step 1 — the running-cost table. For each period and each feasible commitment, dispatch economically. Writing the commitment as a three-bit pattern (U1 U2 U3):

Period\(P_D\)010011110111
00–042001920.02317.02321.22739.8
04–082602416.22780.82795.83182.0
08–124204144.24351.04502.7
12–163803788.73891.04157.3
16–204804720.25043.8
20–225605838.9
22–243002765.03107.23130.23494.8

A dash means infeasible — the committed set cannot reach the demand within its limits, or cannot come down to it. The 560 MW peak is the binding entry: only 111 can carry it (U2+U3 max out at 500 MW), so unit 1 must run at least during 20–22, and the whole problem reduces to deciding when it is cheaper to keep it synchronised than to restart it.

Step 2 — why greedy fails. Choosing the cheapest column in each row independently gives 010, 010, 011, 011, 011, 111, 010, with a running cost of only 85 165 — the lowest possible. But it starts U3 twice and U1 once per cycle:

\[ \text{start-ups} = 5000+8000 = 13\,000 \quad\Longrightarrow\quad \text{total} = 85\,165+13\,000 = \mathbf{98\,165} \]

Running cost and total cost rank the schedules differently, which is the entire content of the unit-commitment problem. It is not solvable period by period, because the decision in one period changes the cost of the next.

Step 3 — the dynamic-programme solution. Treat the commitment pattern as a state and the transition cost as the start-up charge for units that go from off to on. With the cycle closed (the state at 22–24 must connect back to 00–04):

Period\(P_D\)Commitment\(P_1/P_2/P_3\)Cost/h
00–0420011040.0 / 160.0 / off2321.2
04–0826011040.0 / 220.0 / off2795.8
08–12420110120.0 / 300.0 / off4351.0
12–1638011080.0 / 300.0 / off3891.0
16–2048011140.0 / 300.0 / 140.05043.8
20–2256011162.2 / 300.0 / 197.85838.9
22–2430011040.0 / 260.0 / off3130.2
\[ \text{running} = 91\,549.4,\qquad \text{start-ups} = 5000 \ (\text{U3, once}),\qquad \text{total} = \mathbf{96\,549.4}\ \text{thousand Rs/day} \]

The optimum keeps unit 1 running all day and cycles unit 3 — the opposite of what merit order suggests, because unit 1 is the dearer machine. The reason is the start-up charges: U1 costs 8000 to restart and U3 only 5000, so if exactly one unit is to be cycled it should be the cheap-to-start one, whatever its fuel cost.

Step 4 — the alternatives compared. Four candidate schedules, with energy 8680 MWh for the day:

ScheduleRunningStart-upTotalAverage (Rs/kWh)
A — all three on all day97 169.8097 169.811.1947
B — optimum (DP)91 549.4500096 549.411.1232
C — U1 started for the evening only90 190.1800098 190.111.3122
D — greedy least running cost85 164.913 00098 164.911.3093

Read the columns against each other: the running costs rank D < C < B < A and the totals rank B < A < D < C. The order is almost exactly reversed. D beats B on fuel by 6385 and loses to it by 1615 overall; C, the schedule most operators would guess at, is the worst of the four. Doing nothing at all (A) beats two of the three "clever" schedules.

Step 5 — the break-even rule behind it. Shutting a unit down for \(t\) hours saves \(\Delta C\cdot t\) in fuel and costs \(S\) to restart, so it pays only if

\[ t > t^* = \frac{S}{\Delta C} \]

The longest window either unit could be off is the 18 hours outside the 16:00–22:00 peak. Over exactly those 18 hours:

\[ \text{U3: } \overline{\Delta C} = \frac{5620.4}{18} = 312.24 \ \Rightarrow\ t^* = \frac{5000}{312.24} = \mathbf{16.01\ h} \ <\ 18 \quad\checkmark \]
\[ \text{U1: } \overline{\Delta C} = \frac{6979.7}{18} = 387.76 \ \Rightarrow\ t^* = \frac{8000}{387.76} = \mathbf{20.63\ h} \ >\ 18 \quad\times \]

Unit 3 clears its break-even with two hours to spare, so cycling it earns \(5620.4-5000 = \) 620.4 — exactly the margin of schedule B over schedule A. Unit 1's break-even of 20.63 hours exceeds the longest trough available, so cycling it loses \(8000-6979.7 = \) 1020.3 — exactly how much schedule C is worse than A. Both comparisons in Step 4 are reproduced by this one ratio. It is also why large coal units run continuously through weekday nights while gas turbines start and stop twice a day: \(t^*\) is small for a machine that is cheap to start, and it is the start-up cost, not the fuel cost, that decides.

Step 6 — what a real commitment adds. Three constraints omitted here would change the answer further:

ConstraintEffect
Minimum up/down times (typically 8–24 h on coal)Forbids some transitions outright; usually makes schedules flatter
Ramp rates (1–3% of rating per minute)Couples adjacent periods even at fixed commitment
Spinning reserve (largest unit, or a % of demand)Forces extra units on; often the binding reason a unit runs part-loaded

Add a spinning-reserve requirement of one largest unit here and schedule B becomes infeasible in the peak — 111 at 560 MW leaves only 60 MW of headroom against a largest unit of 300 MW, so a fourth machine, or a contract for reserve, would be required. Dispatch answers how much; commitment answers which; reserve answers what if — and the three are solved together in practice, as a mixed-integer programme over 24 to 168 periods.

The schedule with the lowest running cost is the most expensive one overall. Start-up charges reverse the ranking, so commitment cannot be decided period by period — and the unit that gets cycled is the one that is cheap to start, not the one that is dear to run.
AnswerOptimum: units 1 and 2 committed all day, unit 3 started once for 16:00–22:00 — running cost 91 549, start-up 5000, total 96 549 thousand Rs/day at Rs 11.123/kWh. The greedy least-running-cost schedule saves 6385 in fuel but pays 13 000 in start-ups and ends up 1615 dearer; break-even down times are 12.5 h for unit 3 and 22.9 h for unit 1
Challenge 3What \(\lambda\) Pays For, and What Solar Does To It

Settle the station's output at the marginal price \(\lambda\) for \(P_D = 500\) MW and examine whether each unit covers its costs. Then add a must-take solar profile of 0, 0, 60, 150, 80, 0, 0 MW to the seven periods of Challenge 2 and find the fuel saving, the implied value of the solar energy, and the effect on market revenue.

Step 1 — settlement at the marginal price. At \(P_D = 500\), \(\lambda = 9.73913\) and \(P = 41.30/300/158.70\). Paying every megawatt-hour at \(\lambda\):

Unit\(P_i\)Revenue \(\lambda P_i\)Cost \(C_i\)Margin
U141.30402.27726.68−324.41
U2300.002921.742765.00+156.74
U3158.701545.561744.08−198.53
Station500.004869.575235.76−366.20

The station loses 366 thousand Rs/h at its own marginal price. This is not an arithmetic slip — it is structural, and every marginal-cost market has to deal with it.

Step 2 — why, exactly. For a free unit, \(\lambda = b_i+2c_iP_i\), so

\[ \lambda P_i - C_i = (b_i+2c_iP_i)P_i - (a_i+b_iP_i+c_iP_i^2) = \boxed{\;c_iP_i^2 - a_i\;} \]

The quadratic term earns the unit a rent of \(c_iP_i^2\) — that is what makes marginal cost exceed average variable cost — but the no-load cost \(a_i\) is never recovered from it unless \(c_iP_i^2 > a_i\). Check: \(0.015(41.30)^2-350 = -324.41\) ✓ and \(0.008(158.70)^2-400 = -198.53\) ✓. Unit 2 is the exception, and for a different reason: it is at its limit, so its incremental cost 8.90 is below \(\lambda\) and it earns inframarginal rent \((\lambda-8.90)\times300 = 251.74\) on top — which is why its margin of +156.74 does not equal \(c_2P_2^2-a_2 = -95.00\).

Step 3 — the recovery mechanisms. Real markets close the 366 gap in one of three ways:

MechanismWhat it pays for
Scarcity pricing\(\lambda\) is allowed far above fuel cost in tight hours; the rent from a few hours covers the year
Capacity paymentsA separate Rs/MW/yr payment for availability, as in Set 26's plant-mix economics
Uplift / make-wholeThe pool pays any committed unit the shortfall between its offer cost and its energy revenue

The choice between them is one of the central design questions in electricity market regulation, and it is not settled anywhere. Note that the no-load cost \(a_i\) is only unrecoverable because the unit was committed — which is precisely why unit commitment (Challenge 2) is priced separately from dispatch.

Step 4 — solar netted against the load. Must-take generation at zero marginal cost is subtracted from the demand before dispatch, so the thermal units see the net load:

Period\(P_D\)SolarNet\(\lambda\) before\(\lambda\) after\(C\) before\(C\) after
00–0420002007.10007.10002739.82739.8
04–0826002607.64007.64003182.03182.0
08–12420603608.74888.40324502.73988.1
12–163801502308.51847.37004157.32956.9
16–20480804009.44008.63365043.84328.9
20–22560056010.365210.36525838.95838.9
22–2430003008.00008.00003494.83494.8
\[ \text{daily fuel: } 97\,170 \to 87\,450 \quad\Rightarrow\quad \text{saving } \mathbf{9720}\ \text{thousand Rs/day (10.0\%)} \]

Solar energy is \(4(60)+4(150)+4(80) = 1160\) MWh, so the avoided fuel cost is \(9720/1160 = \) Rs 8.379/kWh. That number, not the average cost of Rs 11.19/kWh, is what a solar plant is worth to this system — it displaces the marginal unit, never the average one.

Step 5 — the three effects on the market. Netting the solar changes more than the fuel bill:

EffectBeforeAfter
Daily fuel cost (th.Rs)97 17087 450
Average cost (Rs/kWh)11.19510.075
Market revenue \(\sum\lambda P_D t\) (th.Rs)75 80571 931
Midday \(\lambda\) (12–16)8.51847.3700
Evening peak \(\lambda\) (20–22)10.365210.3652

Three things happen at once. (i) The merit-order effect: midday \(\lambda\) falls 13.5%, so solar suppresses the very price that pays for it. (ii) Revenue cannibalisation: market revenue falls 3874, more than the fuel saving is worth to any one generator — thermal margins shrink faster than thermal costs. (iii) The peak is untouched: \(\lambda\) at 20:00–22:00 is unchanged at 10.3652, because there is no sun. Solar displaces energy and buys no capacity, so every megawatt of thermal plant still has to be there — which is exactly the two-part problem Set 26 posed and this chapter has now priced.

Step 6 — the ramp the thermal plant must supply. Look at the net load rather than the gross:

\[ \text{gross ramp } 12\text{–}16 \to 20\text{–}22: \ 380\to560 = 180\ \text{MW}; \qquad \text{net ramp}: \ 230\to560 = \mathbf{330\ MW} \]

The thermal fleet's evening ramp grows by 83% — the "duck curve". The station's total flexible range is only \(620-180 = 440\) MW, so a 330 MW swing consumes three quarters of it in four hours, at roughly 1.4 MW/min. That is inside a coal plant's ramp rate but not by much, and it is why systems with high midday solar buy flexibility (storage, hydro, gas) rather than more energy. Notice also that the saving is unevenly distributed: unit 2 stays at its maximum in every period, so all of the displacement falls on units 1 and 3, deepening their part-loading and worsening their heat rates — a second-order cost this quadratic model cannot see.

At its own marginal price a station under-recovers by exactly \(\sum(a_i-c_iP_i^2)\) over its free units — here 366 thousand Rs/h — and must-take solar makes it worse: it cuts fuel cost 10%, cuts market revenue too, and leaves the evening peak price completely unchanged. Marginal-cost dispatch prices energy correctly and capacity not at all.
AnswerSettlement at \(\lambda = 9.7391\) yields 4869.57 against a cost of 5235.76 — a shortfall of 366.20 thousand Rs/h, equal to \(\sum(a_i-c_iP_i^2)\) plus unit 2's limit rent. Adding 1160 MWh of solar saves 9720 thousand Rs/day (10.0%), worth Rs 8.379/kWh avoided; midday \(\lambda\) falls 13.5% and market revenue 3874, while the peak \(\lambda\) is unchanged and the evening ramp rises from 180 to 330 MW
Self-Test

Multiple-Choice Questions

  1. MCQ 1. At the economic dispatch optimum, with no unit at a limit, the units operate at equal:
    (a) output   (b) average cost   (c) incremental cost   (d) heat rate

    Show answer
    (c). Only the incremental costs are equalised. Equal outputs, equal average costs and equal heat rates are all different — and generally more expensive — allocations. Problems 4, 5, 6.
  2. MCQ 2. The incremental fuel cost of \(C = a+bP+cP^2\) is:
    (a) \(a/P+b+cP\)   (b) \(b+2cP\)   (c) \(b+cP\)   (d) \(2a+b\)

    Show answer
    (b). Answer (a) is the average cost, and the factor of 2 that distinguishes them is the single most common slip in the whole chapter. Problem 3.
  3. MCQ 3. A unit held at its upper limit at the optimum has an incremental cost that is:
    (a) equal to \(\lambda\)   (b) greater than \(\lambda\)   (c) less than or equal to \(\lambda\)   (d) unrelated to \(\lambda\)

    Show answer
    (c). It is pinned at its maximum precisely because it is cheap at the margin — the system would load it further if it could. A unit at its lower limit has the reverse: \(\mathrm{IC}\ge\lambda\). Getting these two inequalities the wrong way round is the classic limit-handling error. Problem 9.
  4. MCQ 4. The Lagrange multiplier \(\lambda\) in the dispatch problem has units of:
    (a) Rs/h   (b) Rs/MWh   (c) MW   (d) dimensionless

    Show answer
    (b), the same as an incremental cost — and it is that identity, not a coincidence, that makes \(\lambda\) the system marginal price. Formally \(\lambda = dC^*/dP_D\) by the envelope theorem. Problems 6, 13.
  5. MCQ 5. Loading units in merit order of average cost:
    (a) always gives the optimum   (b) gives the optimum only if all \(c_i\) are equal   (c) never gives the optimum   (d) gives the optimum only if all \(b_i\) are equal

    Show answer
    (b). If the curvatures are equal, the incremental costs differ from one another by constants and ordering by either criterion gives the same answer. With different curvatures the orderings can even reverse, which is why the counter-example of Problem 4 works. Problems 4, 12.
  6. MCQ 6. Lambda iteration converges reliably because \(\sum P_i(\lambda)\) is:
    (a) linear in \(\lambda\)   (b) monotonically non-decreasing in \(\lambda\)   (c) periodic   (d) independent of the limits

    Show answer
    (b). Each \(P_i(\lambda)\) is non-decreasing (it rises with \(\lambda\) and then flattens at a limit), so the sum is too and bisection cannot fail. It is piecewise linear, not linear — the kinks are exactly the limit events. Problems 8, 11.
  7. MCQ 7. With \(m\) units free of their limits, \(d\lambda/dP_D\) equals:
    (a) \(\sum 2c_i\)   (b) \(\left(\sum 1/2c_i\right)^{-1}\)   (c) \(2c_{\max}\)   (d) \(1/m\)

    Show answer
    (b) — the harmonic-type combination, exactly like resistors in parallel. Each free unit adds a term to the sum, so more free units always means a flatter price characteristic. Challenge 1.
  8. MCQ 8. The average cost of generation at the station is:
    (a) always equal to \(\lambda\)   (b) always less than \(\lambda\)   (c) always greater than \(\lambda\)   (d) either, depending on the no-load costs

    Show answer
    (d). Revenue at \(\lambda\) minus cost is \(\sum(c_iP_i^2-a_i)\) for the free units: large no-load costs make the average exceed \(\lambda\), heavy loading of steep units makes it fall below. At \(P_D = 500\) the average is 10.47 against \(\lambda = 9.74\). Problem 13, Challenge 3.
  9. MCQ 9. When a unit's fuel price rises by 10%, its cost curve changes by:
    (a) \(b\) only   (b) \(b\) and \(c\) only   (c) \(a\), \(b\) and \(c\) all scaled by 1.10   (d) \(a\) only

    Show answer
    (c). The heat-rate curve is unchanged; the whole cost curve is the heat curve multiplied by the price, so every coefficient scales. Scaling only \(b\) gives the wrong re-dispatch and the wrong cost. Problem 15.
  10. MCQ 10. Valve-point loading effects make the dispatch problem:
    (a) linear   (b) non-convex   (c) unconstrained   (d) easier to solve

    Show answer
    (b). The sinusoidal ripple destroys the monotonicity of \(\mathrm{IC}(P)\), so lambda iteration can converge to any of several points and none of them need be the global optimum. This is what motivates the evolutionary and mixed-integer methods used in practice. Problem 17.
  11. MCQ 11. The decision of which units to run, as distinct from how to load them, is:
    (a) economic dispatch   (b) unit commitment   (c) load flow   (d) state estimation

    Show answer
    (b). Commitment is an integer problem coupled across time by start-up costs and minimum up/down times; dispatch is a continuous problem solved afresh each interval within a commitment. On this station commitment savings are six times the dispatch savings. Problem 18, Challenge 2.
  12. MCQ 12. A must-run constraint that forces a unit above its economic output causes \(\lambda\) to:
    (a) rise   (b) fall   (c) stay the same   (d) become undefined

    Show answer
    (b). The forced megawatts displace output from the free units, which back down their incremental cost curves — so the marginal price falls even though the total cost rises. At \(P_D = 500\) with \(P_1\ge80\), \(\lambda\) drops from 9.7391 to 9.1200 while the cost rises 23.44. Problem 19.
Reference

Key Formulas

The cost characteristic — from heat input to rupees:

\[ H(P) = \alpha+\beta P+\gamma P^2 \ \text{Gcal/h} \qquad C(P) = (\text{Rs/Gcal})\times H(P) = a+bP+cP^2 \ \text{Rs/h} \]
\[ \text{HR} = \frac{H}{P} \qquad \text{IHR} = \frac{dH}{dP} \qquad \eta = \frac{0.86}{\text{HR}} \qquad \text{IC} = \frac{dC}{dP} = b+2cP \]

At the point of minimum heat rate, \(\text{IHR} = \text{HR}\) — the general property of the minimum of any ratio. A fuel price change scales \(a\), \(b\) and \(c\) together.

The dispatch problem and its solution:

\[ \min \sum_{i=1}^{n}C_i(P_i) \quad \text{s.t.}\quad \sum_i P_i = P_D, \qquad P_i^{\min}\le P_i\le P_i^{\max} \]
\[ \mathcal{L} = \sum_i C_i(P_i)+\lambda\Big(P_D-\sum_i P_i\Big) \qquad \frac{\partial\mathcal{L}}{\partial P_i} = 0 \ \Rightarrow\ \boxed{\ \frac{dC_i}{dP_i} = \lambda\ } \]
\[ \text{with limits:}\quad \frac{dC_i}{dP_i} = \lambda \ (\text{free}), \qquad \frac{dC_i}{dP_i}\le\lambda \ (P_i = P_i^{\max}), \qquad \frac{dC_i}{dP_i}\ge\lambda \ (P_i = P_i^{\min}) \]

Closed form and iteration:

\[ P_i = \frac{\lambda-b_i}{2c_i} \qquad\Longrightarrow\qquad \lambda = \frac{P_D+\sum_i b_i/2c_i}{\sum_i 1/2c_i} \quad (\text{no limits binding}) \]
\[ \text{lambda iteration:}\quad P_i(\lambda) = \mathrm{clip}\!\left[\frac{\lambda-b_i}{2c_i},\,P_i^{\min},\,P_i^{\max}\right], \quad \text{solve}\ \sum_i P_i(\lambda) = P_D \]

\(\sum P_i(\lambda)\) is continuous, piecewise linear and non-decreasing, so bisection always converges; the secant method converges quadratically between kinks.

Sensitivity and price:

\[ \boxed{\ \lambda = \frac{dC^*}{dP_D}\ } \qquad \frac{d\lambda}{dP_D} = \left(\sum_{i\ \text{free}}\frac{1}{2c_i}\right)^{-1} \qquad C^*(P_D) = C^*(P_D^0)+\int_{P_D^0}^{P_D}\lambda\,dP \]
\[ \text{margin of a free unit at price }\lambda:\quad \lambda P_i - C_i = c_iP_i^2-a_i \]

A finite block of \(\Delta P\) is worth \(\Delta C/\Delta P\), not \(\lambda\); because \(\lambda\) rises with \(P_D\), using \(\lambda\) for a block always overstates the benefit.

Piecewise-linear and non-convex costs:

\[ \text{blocks: fill in ascending price; at most one block partly loaded; } \lambda = \text{price of that block} \]
\[ \text{valve points:}\quad C(P) = a+bP+cP^2+\left|e\sin\!\left[f\left(P^{\min}-P\right)\right]\right| \]

The ripple adds \(\pm ef\) to the incremental cost — a small percentage on cost but a large one on slope, which is what breaks convexity and with it the equal-\(\lambda\) argument.

Unit commitment:

\[ \min_{u_{it}\in\{0,1\}} \sum_t\left[\sum_i u_{it}C_i(P_{it})\,\Delta t + \sum_i S_i\,\max(u_{it}-u_{i,t-1},0)\right] \]
\[ \text{break-even down time:}\quad \boxed{\ t^* = \frac{S_i}{\overline{\Delta C_i}}\ } \qquad \text{shut down only if the trough exceeds } t^* \]

Solved by dynamic programming over commitment states, or as a mixed-integer programme. Minimum up/down times, ramp rates and spinning-reserve requirements are additional constraints; the least running cost schedule is routinely not the least total cost schedule.

Diagnostics

Common Mistakes

  1. Differentiating \(cP^2\) to \(cP\). The incremental cost is \(b+2cP\), not \(b+cP\). Missing the 2 changes every \(\lambda\), every dispatch and every saving in the chapter — Problem 3.

  2. Dispatching by average cost or by "cheapest unit first". The unit with the lowest average cost is often not the one that should take the extra megawatt. Merit order by average cost is exact only when all the curvatures \(c_i\) are equal — Problems 4, 12.

  3. Getting the limit inequalities backwards. Upper limit means \(\mathrm{IC}\le\lambda\); lower limit means \(\mathrm{IC}\ge\lambda\). Always check the sign after clipping — it is the only thing that confirms the clipped solution is optimal — Problem 9.

  4. Clipping and stopping. Fixing one unit at a limit changes \(\lambda\) for all the others, which can push a second unit onto its limit. The iteration must be repeated until no further limit is violated — Problems 9, 10.

  5. Assuming \(\lambda\) exists. When every unit is at a limit — at the very bottom or very top of the station's range — \(\lambda\) is not determined by the dispatch at all, only bracketed. Practice Problem 11.

  6. Confusing \(\lambda\) with the average cost of generation. They are different numbers with different uses: \(\lambda = 9.7391\) prices the next megawatt-hour; 10.4715 is what the fuel bill divided by the output happens to be — Problem 13.

  7. Valuing a large block at \(\lambda\). \(\lambda\) is the derivative. A 50 MW purchase is worth \(\Delta C/\Delta P = 9.3592\), not 9.7391 — a 4% error, and it grows with the block — Problem 14, Practice 7.

  8. Scaling only \(b\) for a fuel price change. Price multiplies the entire heat curve, so \(a\), \(b\) and \(c\) all scale. Scaling \(b\) alone gives both the wrong re-dispatch and the wrong cost — Problem 15.

  9. Expecting re-dispatch to absorb a fuel price rise. It recovers only a few per cent of it. The dispatch is already near-optimal, so the envelope theorem guarantees the first-order effect of re-optimising is small — Problem 15.

  10. Mixing MW, kWh and the cost units. With \(C\) in thousand Rs/h and \(P\) in MW, \(dC/dP\) comes out directly in Rs/kWh. Change either convention and a factor of 1000 appears — Problems 1, 13.

  11. Treating commitment as a sequence of independent dispatches. Start-up costs couple the periods, and the schedule with the lowest running cost can be the dearest overall — here by 1615 thousand Rs a day — Problem 18, Challenge 2.

  12. Believing marginal-cost settlement pays for the plant. A station paid \(\lambda\) for all its output under-recovers by \(\sum(a_i-c_iP_i^2)\) — 366 thousand Rs/h here. Energy prices pay for fuel; capacity has to be paid for separately — Challenge 3.

Looking Ahead

This chapter answered the operating question for units at one station: share the load so that every unit not at a limit has the same incremental cost. That single condition produced the dispatch schedule, the marginal price \(\lambda\), the sensitivities to fuel price and demand, and — once start-up costs were admitted — the commitment decision as well. Throughout it, one assumption went unremarked: that a megawatt generated anywhere is a megawatt delivered to the load.

Set 28 removes it. When the units are spread over a network, generation at a remote bus arrives diminished by transmission loss, and the loss itself depends on every generator's output — quadratically, through the \(B\)-coefficients of the loss formula. The equal-incremental-cost rule survives, but each unit's incremental cost is first multiplied by a penalty factor \(L_i = 1/(1-\partial P_L/\partial P_i)\) that charges it for the losses its own output creates. A unit deep in a load centre may then be worth running above its unpenalised economic output, and a remote unit below it, even though nothing about their fuel curves has changed. That is loss-coordinated dispatch, and it is where the load-flow machinery of Part 4 rejoins the economics of Part 6.