**2. Mathematical optimization under uncertainty**

In recent years, mathematical programming techniques for decision-making under uncertainty have been applied in many science and engineering areas, including process design, production scheduling and planning, design, control, and supply chain optimization.

Optimization under uncertainty has been motivated because parameters involved in optimization models for design, planning, scheduling, and supply chains are often uncertain parameters such as product demands, prices of raw material, product, and yields.

A major modeling decision in optimization under uncertainty is whether the decision-maker should rely on robust optimization to use stochastic programming [7]. The robust optimization basis idea is to guarantee feasibility over a specified uncertainty set. In contrast, in the stochastic programming approach, a subset of decisions is set by anticipating that recourse actions can be taken once the uncertainties are revealed over a pre-specified scenario with discrete probabilities of uncertainties. The robust optimization basis idea is to guarantee feasibility over a specified uncertainty set. In contrast, in the stochastic programming approach, a subset of decisions is set by anticipating that recourse actions can be taken once the uncertainties are revealed over a pre-specified scenario with discrete probabilities of the uncertainties.

In general, the optimization approach tends to be more appropriate for short-term scheduling problems in which feasibility over a specified set of uncertain parameters is a major concern and when there is not much scope for recourse decisions. On the other hand, the stochastic programming approach tends to be more appropriate for long-term production planning and strategic design decisions.

In this section, the authors briefly explain three leading modeling paradigms for optimization under uncertainty, namely stochastic programming, robust optimization, and chance-constrained programming.

## **2.1 Stochastic programming**

Under uncertainty, a common decision-making approach is stochastic programming, aiming to optimize the expected objective value across all the uncertainty realizations [8]. The stochastic programming key idea is to model the randomness in uncertain parameters with probability distributions. In this approach, the first stage, all the decisions must be made without knowing precisely the uncertainty realizations. The decision-maker then waits for resolving the uncertainty and knowing the actual value of the uncertain parameters. In the second stage, the decision-maker takes corrective actions after uncertainty is revealed. The stochastic programming approach has demonstrated various applications, such as inventory routing problems [9], supply chain network modeling [10], distributed energy systems design [11], optimal tactical planning [12], and energy management [13].
