ESM / Concepts
Shadow Price
Created
The shadow price (dual value) belongs to a constraint, not a variable: how much the optimal objective changes when that constraint’s RHS goes up by 1, all else fixed.
Mini dispatch (A: 20 €/MWh, ≤ 100 MW · B: 30 €/MWh, ≤ 500 MW · demand 300 MW → A = 100, B = 200, cost 8000 €/h):
| Constraint | RHS +1 does | New cost | Shadow price |
|---|---|---|---|
gA + gB >= 300 | tighten | 8030 | +30 (marginal unit B) |
gA <= 100 | loosen | 7990 | −10 (1 MW moves B → A: 20 − 30) |
gB <= 500 | nothing (non-binding) | 8000 | 0 |
Non-binding → 0: Changes nothing → Complementary Slackness.
Demand dual = market price
The shadow price of the demand constraint is 30 €/MWh because one extra MW of demand must come from the marginal unit B, which costs 30 €/MWh. Therefore it equals the market price, since at any lower price B stops generating and supply does not meet demand, and at any higher price B runs as much as possible and supply exceeds demand.
The LP contains only costs, no electricity price anywhere. Still, after solving, the dual of the demand constraint (30) is the price → Merit Order, Market Clearing.
- Total cost is €/h (MW × €/MWh), not €/MWh
- Recompute at the new optimum (same binding constraints), not at another corner
- Each constraint has its own shadow price: don’t mix the demand dual with a capacity dual
- Only valid while the same constraints stay binding (small changes)
- KKT gives (e.g. A capacity = 10, not −10) → see KKT Conditions
Links: KKT Conditions, Complementary Slackness, Duality, Merit Order, Market Clearing