Unit Commitment
UC · MILP
Day-Ahead · Binary Commitment · Thermal Generation
Which generators should a system operator start, stop, or keep running over the next 24 hours to meet load at minimum total cost — accounting for the fuel each burns, the thousands of dollars to fire up a cold boiler, the physical constraints on ramping, and the minimum time a steam turbine must run once committed? This is the unit commitment problem: a mixed-integer program that every grid operator in the world solves every single day.
The problem
Real-world decision · mathematical characterization
Every evening around 10 a.m. local time, the day-ahead market of a typical ISO — PJM, MISO, CAISO, ERCOT in North America; Nord Pool in Europe; AEMO in Australia — closes. By noon, the system operator must publish a 24-hour schedule: which of the hundreds to thousands of generators in its footprint will be committed (turned on) for each hour of the next day, and which will stay offline. Each “on” generator will then receive a dispatch instruction telling it exactly how many megawatts to produce.
The problem is harder than it sounds. A coal unit can take 4–8 hours to warm up from cold start and burns a significant amount of fuel doing so — typically $2,000–$10,000 per start. Once online, it must run for several hours before it can be shut down (the minimum up time) and, if shut down, must stay off for a minimum period (minimum down time) before restarting. Output can only change at a bounded rate (ramp rate), typically a few megawatts per minute. The system must also maintain spinning reserve — extra committed capacity held back to cover the sudden loss of any single large unit.
These constraints turn what would otherwise be a simple least-cost dispatch into a combinatorial optimization problem with a binary variable for each generator-hour pair. With 500 generators over 24 hours, that's 12,000 binaries. Modern ISOs solve unit-commitment instances with tens of thousands of binaries and millions of continuous variables using branch-and-cut in Gurobi or CPLEX, routinely to an optimality gap below 0.1% in under five minutes.
Under high renewable penetration, the deterministic UC that served the industry for sixty years is increasingly inadequate. Wind and solar forecast errors of 10–20% are routine; committing only the units that a point forecast justifies leaves insufficient flexibility to respond when the forecast misses. Stochastic UC (Takriti, Birge & Long, 1996; reviewed in Zheng, Wang & Liu, 2015) optimizes over a scenario tree; robust UC (Bertsimas et al., 2013) optimizes against the worst outcome inside a budgeted uncertainty set; chance-constrained UC guarantees feasibility with a specified probability. These variants form the research frontier and are increasingly deployed in practice.
Mathematical formulation
Three-binary MILP · Carrión & Arroyo (2006)
Notation
We index generators by $i \in \mathcal{G}$ and hours by $t \in \mathcal{T} = \{1, \dots, T\}$.
| Symbol | Meaning | Units |
|---|---|---|
| $\mathcal{G}$ | Set of generators | — |
| $\mathcal{T}$ | Set of hours in horizon | — |
| $D_t$ | System load in hour $t$ | MW |
| $R_t$ | Spinning-reserve requirement in hour $t$ | MW |
| $P_i^{\min}, P_i^{\max}$ | Technical min and max of generator $i$ | MW |
| $RU_i, RD_i$ | Ramp-up and ramp-down limits | MW/h |
| $TU_i, TD_i$ | Minimum up and down times | h |
| $c_i(p)$ | Variable production cost curve | $/h |
| $SU_i$ | Start-up cost of generator $i$ | $ |
| $u_{i,t}$ | On/off status (binary) | {0,1} |
| $v_{i,t}$ | Start-up indicator (binary) | {0,1} |
| $w_{i,t}$ | Shut-down indicator (binary) | {0,1} |
| $p_{i,t}$ | Power output of generator $i$ in hour $t$ | MW |
Objective(total cost minimization)
Minimize the sum of variable production cost, start-up cost, and no-load cost over all generators and hours:
The production cost curve $c_i(p)$ is typically quadratic ($a_i + b_i p + c_i p^2$) or piecewise-linear. In the dispatch step the quadratic curve produces the familiar equal-incremental-cost rule of economic dispatch; for the MILP we linearize it via tangent cuts.
Constraints
Power balance: total generation meets load in every hour.
Generation limits: output bounded by technical min/max when committed, zero when off.
Start-up / shut-down logic: link the three binaries.
Minimum up / down times: if just started, stay on for $TU_i$ hours; if just stopped, stay off for $TD_i$.
Ramp limits: output cannot change faster than the machine allows.
Spinning-reserve adequacy: committed capacity must cover load plus reserve.
Binary and non-negativity:
Alternative: tight-and-compact formulationMorales-España et al. (2013)
The three-binary formulation above is already much tighter than the classical one-binary formulation because constraints (4)–(5) expose start-up and shut-down as decision variables rather than inferring them from $u$ differences. Morales-España, Latorre & Ramos (2013) further tighten the LP relaxation by adding valid inequalities for the minimum up/down time constraints — producing an LP relaxation that in their computational study is typically within 0.01–0.1% of the integer optimum. This collapses branch-and-bound times by an order of magnitude versus formulation (6)–(7) and is the formulation most commercial ISO tools use today.
The trade-off is more constraints and a larger LP at each node of the branching tree — worth it on real instances because fewer nodes are explored.
Complexity
UC is NP-hard. Bard (1988) showed this by reduction from 3-PARTITION. The complexity comes from the binary $u_{i,t}$ variables coupled across time through the minimum up/down time and ramp constraints. Without these couplings the problem decomposes into $|\mathcal{G}|$ independent single-generator problems; it is the coupling constraints (2), (6), and (10) that make it hard.
Practical solvability depends on horizon length $T$, number of generators $|\mathcal{G}|$, and how tight the formulation is. The three-binary tight formulation of Carrión & Arroyo (2006) with the cuts of Morales-España et al. (2013) routinely solves 24-hour instances with thousands of generators to sub-1% gap in minutes on commodity hardware.
Real-world data
Benchmark libraries · test systems
IEEE Reliability Test System (RTS-96 / RTS-GMLC)
The RTS-GMLC (Reliability Test System — Grid Modernization Lab Consortium) extends the classic IEEE-RTS-96 to 73 thermal units and 25 renewable plants on a 73-bus three-area system with one year of hourly load and renewable profiles. It is the most common open benchmark for modern UC research.
MATPOWER test cases
MATPOWER provides steady-state power-flow cases (case9, case30, case118, case300, case2383wp, case13659pegase) that are standard in academic OPF/UC research. Generator cost curves, limits, and network data are included.
PGLIB-OPF benchmark library
The PGLIB-OPF library maintained by the IEEE PES Task Force packages 350+ test systems from 1-bus to 30,000-bus, covering North American, European, and Polish grids. Widely used to compare OPF solvers and convex relaxations.
Illustrative 8-unit pool (this page)
The interactive solver below uses a synthetic 8-generator pool spanning baseload coal through peaking oil and flexible hydro, with a characteristic 24-hour residential- commercial-industrial demand profile. Parameters are illustrative of US-northeast thermal fleets (not a specific utility's data) and serve as a pedagogical instance small enough to solve interactively in the browser.
| Unit | Type | $P^{\min}$ (MW) | $P^{\max}$ (MW) | Marginal cost (\$/MWh) | Start-up (\$) | Min up (h) |
|---|---|---|---|---|---|---|
| Coal-1 | Baseload | 100 | 350 | 25 | 5,000 | 4 |
| Coal-2 | Baseload | 80 | 300 | 28 | 4,500 | 4 |
| Gas-CC | Combined-cycle | 50 | 250 | 35 | 2,000 | 2 |
| Gas-CT-1 | Peaker | 20 | 150 | 50 | 800 | 1 |
| Gas-CT-2 | Peaker | 20 | 120 | 55 | 700 | 1 |
| Gas-CT-3 | Peaker | 15 | 100 | 58 | 600 | 1 |
| Oil-Peak | Peaker | 10 | 80 | 75 | 400 | 1 |
| Hydro | Flexible | 0 | 200 | 5 | 0 | 1 |
Interactive solver
Explore three canonical UC algorithms · generation-stack visualization
Parameters
Algorithm
Generation stack & commitment
Solution interpretation
What a system operator reads from the schedule
The generation stack tells the operator which technologies carry which part of the load. Baseload coal fills the floor of the stack because its marginal cost is lowest among thermal units; gas combined-cycle sits above it because it is more efficient than peakers but still more expensive than coal; peaking gas turbines and oil come online only during the midday and evening peaks, when the cost to run them is exceeded by the value of meeting the last megawatt of demand.
The commitment Gantt shows which units are paying the start-up cost. A coal unit running flat for 24 hours pays start-up at most once (often zero, if it was already running from the previous day); a gas peaker that fires for three hours in the evening pays start-up $700–$800 for a brief revenue window — economics that only work because the peak price spike is steep enough to cover it.
The LP relaxation bound is the UC theorist's most important metric. If the LP relaxation objective equals the MILP objective, the LP relaxation is said to be exact: the problem could have been solved as a pure LP. On tight formulations (Morales-España et al., 2013), the gap is typically 0.01–0.5% and branch-and-bound closes it in seconds. On loose formulations the gap can be 5–15% and branch-and-bound may not converge in practical time.
The Lagrangian relaxation takes a different approach: it dualizes the demand-balance constraint (2), decomposing the problem into $|\mathcal{G}|$ independent single-generator subproblems which can be solved in closed form. A subgradient method updates the multipliers $\lambda_t$ (which have a natural interpretation as hourly marginal prices) until the dual objective converges. The primal solution recovered from the dual is usually infeasible; a repair step adjusts it to satisfy demand exactly. Lagrangian was the workhorse of ISO practice from 1980 to roughly 2005 and remains useful today for extremely large instances where commercial MILP struggles.
Extensions & variants
Where UC research lives today
Stochastic Unit Commitment
Wind and solar forecasts are wrong by 10–20% on average, and the commitment decision must be made before the forecast is fully resolved. Stochastic UC replaces the single forecast with a scenario tree and optimizes the expected cost over all realizations. First-stage decisions (commitments) are scenario-independent; second-stage decisions (dispatch) adapt to each scenario.
The size of the extensive-form MILP scales with the scenario count, so practical solutions use scenario reduction (Gröwe-Kuska et al., 2003) or Benders decomposition.
Adjustable Robust UC
Robust UC optimizes against the worst-case realization of uncertainty inside a budgeted uncertainty set — typically a box with a $\Gamma$-budget constraint (Bertsimas & Sim, 2004) bounding the number of simultaneous deviations. The two-stage adjustable variant (Bertsimas et al., 2013) allows dispatch to depend on the realization, yielding less conservative schedules than the fully-static version.
Column-and-constraint generation (Zhao & Zeng, 2012) is the standard solution method. Performance under high renewable penetration is comparable to stochastic UC with less sensitivity to forecast distribution assumptions.
Security-Constrained UC (SCUC)
SCUC extends UC with network constraints (DC-OPF power flow and line limits) and N−1 contingency constraints (the schedule must remain feasible after any single generator or line outage). SCUC is what every US ISO actually solves as its day-ahead market clearing — a single monolithic MILP with tens of thousands of binaries and hundreds of thousands of continuous variables.
Benders decomposition separates commitment (master) from dispatch-per-contingency (subproblems). Cuts from subproblems refine the master's feasible region.
Chance-constrained UC
Requires that load-plus-reserve adequacy hold with probability at least $1-\alpha$ for a user-specified risk $\alpha$ (typically 5% or 1%). Yields a formulation less conservative than robust UC and with an interpretable reliability guarantee. When renewable forecast errors are Gaussian the chance constraints become second-order cones; for non-parametric distributions scenario-approximation replaces them with a sample of constraints.
Rolling-horizon UC
In real-time operations the commitment schedule is re-optimized hourly or every fifteen minutes over a shrinking horizon, with the first period's decisions implemented and the remainder rolled forward. Fast re-solves favour tight-and-compact formulations and warm-started LP bases.
Distributionally-robust UC
Optimizes against the worst distribution in an ambiguity set defined by Wasserstein distance or moment conditions. Bridges stochastic and robust: reduces conservatism of robust optimization while tolerating distributional misspecification. Active research frontier, few industrial deployments yet.
Key references
Cited above · DOIs and permanent URLs