In Two-Stage Robust Optimisation (TSRO), decisions split across two stages. First-stage decisions are made before uncertainty is revealed. Second-stage (recourse) decisions are made after, under whichever realisation of uncertainty occurs. The defining word is robust: rather than minimising expected cost across all scenarios (as in stochastic programming), TSRO minimises cost under the worst-case scenario from a defined uncertainty set.
The outer optimisation selects first-stage decisions. The inner optimisation finds the worst-case scenario those decisions must survive. The recourse layer responds to that scenario. The combined structure is written as a min-max-min: minimise over first-stage decisions, maximise over adversarial scenarios, minimise over recourse actions.
Stage 1 (before uncertainty): A grid operator commits generation units — decides which generators to start — before knowing which transmission lines will fail due to severe weather.
Adversarial inner problem: The model finds the worst-case transmission failure within the defined uncertainty set (e.g., any single line failure, or any combination of up to k failures).
Stage 2 (after uncertainty): Given that worst-case failure, dispatch decisions adjust to minimise load shedding.
TSRO guarantees feasibility against any failure in the uncertainty set. A deterministic model only guarantees feasibility for the forecast scenario, and a stochastic model only guarantees good average performance — neither provides the adversarial guarantee a utility needs when a failure means lights going out.
Stochastic programming minimises expected cost across a probability distribution of scenarios. It assumes the distribution is known and accepts that bad scenarios will sometimes occur, compensated by good ones. It produces plans that are on average good but can fail badly in tail scenarios.
Two-Stage Robust Optimisation makes no assumption about probabilities. It minimises worst-case cost within an uncertainty set. It produces plans guaranteed to work in the worst case — but those plans may be unnecessarily conservative in average conditions.
Choosing between them is not a technical question — it is a risk appetite question. A utility protecting against a once-in-a-decade grid failure needs TSRO. A logistics company optimising average-case delivery cost can use stochastic programming. Most practitioners apply stochastic programming by default without asking whether their failure modes are average-case or adversarial-case.
The first question to ask when evaluating a "resilient" or "robust" planning system: is worst-case scenario defined explicitly as an uncertainty set, or is the model just optimising average performance and calling it robust?
TSRO problems are notoriously hard to solve because the inner maximisation (finding the worst-case scenario) and the outer minimisation (choosing first-stage actions) interact non-convexly.
Column-and-constraint generation (C&CG) is the standard decomposition technique: iteratively generate the worst-case scenario and add it as a new constraint, until the first-stage decision is robust against all scenarios generated so far. C&CG alternates between a master problem (first-stage decisions) and a subproblem (finding the worst-case scenario).
When C&CG is too slow for time-sensitive decisions, inner-approximation reformulations can replace the intractable robust second-stage with a structured linear program, achieving order-of-magnitude speedups while preserving solution quality — the approach used in virtual power plant bidding applications.
Choosing TSRO over stochastic programming is a risk appetite decision, not a technical one: it asks whether failure under the worst case is unacceptable, or merely costly on average.