Computing Library › Optimization
Optimization

Stochastic Programming

Stochastic programming optimizes decisions when some data is random, using probability distributions to model uncertainty and expected outcomes.

Deciding under uncertainty

Deterministic optimization assumes all data is known. In reality demand, yields, weather, and prices are uncertain when decisions are made. Stochastic programming models the uncertain data as random variables with a known (or estimated) probability distribution, and optimizes a probabilistic objective, most often the expected cost, over that distribution.

Recourse: decisions in stages

Kronos motion — when

The key structure is recourse: some decisions are made now (here-and-now), before uncertainty is revealed, and others are made later (wait-and-see), after observing the outcome. The now-decision must be robust across all futures because it cannot be changed, while the later decisions adapt to what actually happens. This staged view distinguishes stochastic programming from simply optimizing an average.

Solution approaches

Continuous distributions are usually discretized into a finite set of scenarios, each with a probability, turning the expectation into a weighted sum. The resulting deterministic-equivalent program is large but structured, with one block of constraints per scenario coupled by the shared first-stage decision. Decomposition methods such as Benders (L-shaped) exploit this block structure to solve problems too large to tackle whole.

Measures beyond the mean

Optimizing expected cost ignores tail risk. Risk-averse stochastic programming instead optimizes a risk measure such as conditional value-at-risk, which weights bad outcomes more heavily. This produces decisions that accept a slightly higher average cost in exchange for protection against rare severe outcomes, which is often what a planner actually wants. Stochastic programming applies wherever staged decisions meet quantifiable uncertainty, from energy dispatch to supply-chain and capacity planning.