# Stochastic programming

Authors: Roohi Menon, Hangyu Zhou, Gerald Ogbonna, Vikram Raghavan (SYSEN 6800 Fall 2021)

## Introduction

Two-stage stochastic programming scheme: conceptual representation is on the left; scenario tree is on the right, where ${\displaystyle x}$ denotes the first stage decisions, ${\displaystyle y_{\omega }}$ denotes the second stage decisions for each scenario ${\displaystyle \omega }$. ${\displaystyle \tau _{\omega },h_{\omega }}$ denotes the probability and the constraints of each scenario, respectively. [1]

Stochastic Programming is a mathematical framework to help decision-making under uncertainty. [1] Deterministic optimization frameworks like the linear program (LP), nonlinear program (NLP), mixed-integer program (MILP), or mixed-integer nonlinear program (MINLP) are well-studied, playing a vital role in solving all kinds of optimization problems. But this sort of formulation assumes that one has perfect knowledge of the future outcome of the system, and the entire system is deterministic. [2] They tend to produce sub-optimal results in some real-world situations where uncertainties significantly impact the system behavior. To address this problem, stochastic programming extends the deterministic optimization methodology by introducing random variables that model the uncertain nature of real-world problems, trying to hedge against risks and find the optimal decision with the best-expected performance under all possible situations. With uncertainties being widespread, this general stochastic framework finds applications in a broad spectrum of problems across sectors, from electricity generation, financial planning, supply chain management to process systems engineering, mitigation of climate change, and pollution control, and many others. [1]

Since its origin in the 1950s, the stochastic programming framework has been studied extensively. [3] A significant number of theoretical and algorithmic developments have been made to tackle uncertainty under different situations. To make an in-depth and fruitful investigation, we limited our topic to two-stage stochastic programming, the simplest form that focuses on situations with only one decision-making step. We will examine the most popular algorithm for solving such programs and discuss other aspects of this fascinating optimization framework.

## Theory, methodology, and/or algorithmic discussion

Modeling through stochastic programming is often adopted because of its proactive-reactive decision-making feature to address uncertainty. [4] Two-stage stochastic programming (TSP) is helpful when a problem requires the analysis of policy scenarios, however, the associated system information is inherently characterized with uncertainty. [1] In a typical TSP, decision variables of an optimization problem under uncertainty are categorized into two periods. Decisions regarding the first-stage variables need to be made before the realization of the uncertain parameters. The first-stage decision variables are proactive for they hedge against uncertainty and ensure that the solution performs well under all uncertainty realizations. [4] Once the uncertain events have unfolded/realized, it is possible to further design improvements or make operational adjustments through the values of the second-stage variables, also known as recourse, at a given cost. The second-stage variables are reactive in their response to the observed realization of uncertainty. [4] Thus, optimal decisions should be made on data that is available at the time the decision is being made. In such a setup, future observations are not taken into consideration. [5] Two-stage stochastic programming is suited for problems with a hierarchical structure, such as integrated process design, and planning and scheduling. [4]

### Methodology

The classical two-stage stochastic linear program with fixed recourse [6] is given below:

${\displaystyle \min z=c^{T}x+E_{\xi }[\min q(\omega )^{T}y(\omega )]}$

${\displaystyle s.t.\quad Ax=b}$

${\displaystyle \qquad \quad T(\omega )x+Wy(\omega )=h(\omega )}$

${\displaystyle \qquad \quad x\geq 0,y(\omega )\geq 0}$

Where ${\displaystyle c}$ is a known vector in ${\displaystyle \mathbb {R} ^{n_{1}}}$, ${\displaystyle b}$ is a known vector in ${\displaystyle \mathbb {R} ^{m_{1}}}$. ${\displaystyle A}$ and ${\displaystyle W}$ are known matrices of size ${\displaystyle m_{1}\times n_{1}}$ and ${\displaystyle m_{2}\times n_{2}}$ respectively. ${\displaystyle W}$ is known as the recourse matrix.

The first-stage decisions are represented by the ${\displaystyle n_{1}\times 1}$ vector ${\displaystyle x}$. Corresponding to ${\displaystyle x}$ are the first-stage vectors and matrices ${\displaystyle c}$, ${\displaystyle b}$, and ${\displaystyle A}$. In the second stage, a number of random events ${\displaystyle \omega \in \Omega }$ may realize. For a given realization ${\displaystyle \omega }$, the second-stage problem data ${\displaystyle q(\omega )}$, ${\displaystyle h(\omega )}$, and ${\displaystyle T(\omega )}$ become known. [7]

### Algorithm discussion

To solve problems related to Two-Stage Linear Stochastic Programming more effectively, algorithms such as Benders decomposition or the Lagrangean decomposition can be used. Benders decomposition was presented by J.F Benders and is a decomposition method used widely to solve mixed-integer problems. The algorithm is based on the principle of decomposing the main problem into sub-problems. The master problem is defined with only the first-stage decision variables. Once the first-stage decisions are fixed at an optimal solution of the master problem, thereafter, the subproblems are solved and valid inequalities of x are derived and added to the master problem. On solving the master problem again, the algorithm iterates until the upper and lower bound converge. [1] The Benders master problem is defined as being linear or mixed-integer and having fewer technical constraints, while the sub-problems could be linear or nonlinear in nature. The subproblems’ primary aim is to validate the feasibility of the master problem’s solution. [6] Benders decomposition is also known as L-shaped decomposition because once the first stage variables, ${\displaystyle x}$, are fixed then the rest of the problem has a structure of a block-diagonal. This structure can be decomposed by scenario and solved independently. [1]

... We assume that the random vector ${\displaystyle \xi }$ has finite support. Let ${\displaystyle k=1,\ldots ,K}$ index possible second stage realizations and let ${\displaystyle p_{k}}$ be the corresponding probabilities. With that, we could write down the deterministic equivalent of the stochastic program. This form is created by associating one set of second-stage decisions (${\displaystyle y_{k}}$) to each realization of ${\displaystyle \xi }$, i.e., to each realization of ${\displaystyle q_{k}}$, ${\displaystyle h_{k}}$, and ${\displaystyle T_{k}}$. This large-scale deterministic counterpart of the original stochastic program is known as the extensive form:

{\displaystyle {\begin{aligned}\min c^{T}x+\sum _{k=1}^{K}p_{k}&q_{k}^{T}y_{k}\\s.t.\qquad \quad Ax&=b\\T_{k}x+W_{y_{k}}&=h_{k},&k=1,...,K\\x\geq 0,y_{k}&\geq 0,&k=1,...,K\\\end{aligned}}}

It is equivalent with the following formulation. The L-shape block structure of this extensive form gives rise to the name, L-shaped method.

Block structure of the two-stage extensive form [7]

${\displaystyle {\begin{array}{lccccccccccccc}\min &c^{T}x&+&p_{1}q_{1}^{T}y_{1}&+&p_{2}q_{2}^{T}y_{2}&+&\cdots &+&p_{K}q_{K}^{T}y_{K}&&\\s.t.&Ax&&&&&&&&&=&b\\&T_{1}x&+&W_{1}y_{1}&&&&&&&=&h_{1}\\&T_{2}x&+&&&W_{2}y_{2}&&&&&=&h_{2}\\&\vdots &&&&&&\ddots &&&&\vdots \\&T_{s}x&+&&&&&&&W_{K}y_{K}&=&h_{K}\\&x\geq 0&,&y_{1}\geq 0&,&y_{2}\geq 0&&\ldots &&y_{K}\geq 0\\\end{array}}}$

#### L-Shaped Algorithm

Step 0. Set ${\displaystyle r=s=v=0}$ Step 1. Set ${\displaystyle v=v+1}$. Solve the following linear program (master program)

{\displaystyle {\begin{aligned}\min z=c^{T}x&+\theta \\s.t.Ax&=b&&&(1)\\D_{\ell }x&\geq d_{\ell },&\ell =1,\ldots ,r&&(2)\\E_{\ell }x+\theta &\geq e_{\ell },&\ell =1,\ldots ,s&&(3)\\x&\geq 0,&\theta \in \mathbb {R} &&(4)\end{aligned}}}

Let ${\displaystyle (x^{k},\theta ^{k})}$ be an optimal solution. If there is no constraint (3), set ${\displaystyle \theta ^{k}=-\infty }$, ${\displaystyle x^{k}}$ is defined by the remaining constraints.

Step 2. For ${\displaystyle k=1,\ldots ,K}$ solve the following linear program:

{\displaystyle {\begin{aligned}\min &w'=e^{T}v^{+}+e^{T}v^{-}\\s.t.&Wy+Iv^{+}-Iv^{-}=h_{k}-T_{k}x^{v}\\&y\geq 0,v^{+}\geq 0,v^{-}\geq 0\\\end{aligned}}}

where ${\displaystyle e^{T}=(1,\ldots ,1)}$, ${\displaystyle I}$ is the identity matrix. Until for some ${\displaystyle k}$ the optimal value ${\displaystyle w'>0}$. In this case, let ${\displaystyle \sigma ^{v}}$ be the associated simplex multipliers and define

${\displaystyle D_{r+1}=(\sigma ^{v})^{T}T_{k}}$

${\displaystyle d_{r+1}=(\sigma ^{v})^{T}h_{k}}$

to generate a constraint (called a feasibility cut) of type (2). Set ${\displaystyle r=r+1}$, add the constraint to the constraint set (2), and return to Step 1. If for all ${\displaystyle k}$, ${\displaystyle w'=0}$, go to Step 3.

Step 3: For ${\displaystyle k=1,\ldots ,K}$ solve the linear program

{\displaystyle {\begin{aligned}\min &w=q_{k}^{T}y\\s.t.&Wy=h_{k}-T_{k}x^{v}&&(4)\\&y\geq 0\end{aligned}}}

Let ${\displaystyle \pi _{k}^{v}}$ be the simplex multipliers associated with the optimal solution of Problem ${\displaystyle k}$ of type (4). Define

${\displaystyle E_{s+1}=\sum _{k=1}^{K}p_{k}(\pi _{k}^{v})^{T}T_{k}}$

${\displaystyle e_{s+1}=\sum _{k=1}^{K}p_{k}(\pi _{k}^{v})^{T}h_{k}}$

Let ${\displaystyle w^{v}=e_{s+1}-E_{s+1}x^{v}}$. If ${\displaystyle \theta ^{v}\geq w^{v}}$, stop; ${\displaystyle x^{v}}$ is an optimal solution. Otherwise, set ${\displaystyle s=s+1}$, add to the constraint set (3) and return to Step 1.

This method approximates ${\displaystyle {\mathcal {L}}}$ using an outer linearization. This approximation is achieved by the master program (1)-(4). It finds a proposal ${\displaystyle x}$, then sent it to the second stage. Two types of constraints are sequentially added: (i) feasibility cuts (2) determining ${\displaystyle {x|{\mathcal {L}}(x)<+\infty }}$ and (ii) optimality cuts (3), which are linear approximations to ${\displaystyle {\mathcal {L}}}$ on its domain of finiteness.

## Numerical Example

To illustrate the algorithm mentioned above, let's take a look at the following numerical example.

{\displaystyle {\begin{aligned}z=\min 10{x_{1}}+15&{x_{2}}+E_{\xi }(q_{1}y_{1}+q_{2}y_{2})\\s.t.x_{1}+x_{2}&\leq 12\\6y_{1}+10y_{2}&\leq 60x_{1}\\8y_{1}+5y_{2}&\leq 80x_{2}\\y_{1}&\leq d_{1},y_{2}\leq d_{2}\\x_{1}&\geq 4,x_{2}\geq 2\\y_{1},y_{2}&\geq 0\end{aligned}}}

where ${\displaystyle \xi ^{T}=(d_{1},d_{2},q_{1},q_{2})}$ has 0.4 probability to be ${\displaystyle \xi _{1}=(50,10,-2.4,-2.8)}$ and 0.6 probability to be ${\displaystyle \xi _{2}=(30,30,-2.8,-3.2)}$.

We should note that in this case, as ${\displaystyle x\geq 0}$, ${\displaystyle d\geq 0}$ and ${\displaystyle y_{1},y_{2}\geq 0}$, the second stage is always feasible, which means ${\displaystyle x\in K_{2}}$ always hold true. So we could skip the feasibility cuts (step 2) in all iterations. The L-shaped method iterations are shown below:

Iteration 1:

Step 1. With no ${\displaystyle \theta }$, the master program is ${\displaystyle z=min\{10x_{1}+15x_{2}|x_{1}+x_{2}\leq 12,x_{1}\geq 4,x_{2}\geq 2\}}$. Result is ${\displaystyle x^{1}=(4,2)^{T}}$. Set ${\displaystyle \theta ^{1}=-\infty }$.

Step 2. No feasibility cut is needed.

Step 3.

• For ${\displaystyle \xi =\xi _{1}}$, solve:
${\displaystyle w=min\{-2.4y_{1}-2.8y_{2}|6y_{1}+10y_{2}\leq 240,8y_{1}+5y_{2}\leq 160,0\leq y_{1}\leq 50,0\leq y_{2}\leq 10\}}$
The solution is ${\displaystyle w_{1}=-61,y^{T}=(13.75,10),\pi _{1}^{T}=(0,-0.3,0,-1.3)}$
• For ${\displaystyle \xi =\xi _{2}}$, solve:
${\displaystyle w=min\{-2.8y_{1}-3.2y_{2}|6y_{1}+10y_{2}\leq 240,8y_{1}+5y_{2}\leq 160,0\leq y_{1}\leq 30,0\leq y_{2}\leq 30\}}$
The solution is ${\displaystyle w_{2}=-83.84,y^{T}=(8,19.2),\pi _{2}^{T}=(-0.232,-0.176,0,0)}$
Since ${\displaystyle h_{1}=(0,0,50,10)^{T},h_{2}=(0,0,30,30)^{T}}$, we have
${\displaystyle e_{1}=0.4\cdot \pi _{1}^{T}\cdot h_{1}+0.6\cdot \pi _{2}^{T}\cdot h_{2}=0.4\times (-13)+0.6\times (0)=-5.2}$
Here, the matrix ${\displaystyle T}$ is the same in these two scenarios, which is ${\displaystyle {\begin{bmatrix}-60&0\\0&-80\\0&0\\0&0\end{bmatrix}}}$. Therefore, we have
${\displaystyle E_{1}=0.4\cdot \pi _{1}^{T}\cdot T+0.6\cdot \pi _{2}^{T}\cdot T=0.4\times (0,24)+0.6\times (13.92,14.08)=(8.352,18.048)}$
Thus, ${\displaystyle w^{1}=-5.2-(8.352,18.048)\cdot x^{1}=-74.704>\theta ^{1}=-\infty }$, we add the cut
${\displaystyle 8.352x_{1}+18.048x_{2}+\theta \geq -5.2}$

Iteration 2:

Step 1. The master program is

{\displaystyle {\begin{aligned}z=min\{10x_{1}+15x_{2}+\theta |x_{1}+x_{2}\leq 12&,x_{1}\geq 4,x_{2}\geq 2,\\&8.352x_{1}+18.048x_{2}+\theta \geq -5.2\}\end{aligned}}}
Result is ${\displaystyle z=-22.992,x^{2}=(4,8)^{T},\theta ^{2}=-182.992}$.

Step 2. No feasibility cut is needed.

Step 3.

• For ${\displaystyle \xi =\xi _{1}}$, solve:
${\displaystyle w=min\{-2.4y_{1}-2.8y_{2}|6y_{1}+10y_{2}\leq 240,8y_{1}+5y_{2}\leq 640,0\leq y_{1}\leq 50,0\leq y_{2}\leq 10\}}$
The solution is ${\displaystyle w_{1}=-96,y^{T}=(40,0),\pi _{1}^{T}=(-0.4,0,0,0)}$
• For ${\displaystyle \xi =\xi _{2}}$, solve:
${\displaystyle w=min\{-2.8y_{1}-3.2y_{2}|6y_{1}+10y_{2}\leq 240,8y_{1}+5y_{2}\leq 640,0\leq y_{1}\leq 30,0\leq y_{2}\leq 30\}}$
The solution is ${\displaystyle w_{2}=-103.2,y^{T}=(30,6),\pi _{2}^{T}=(-0.32,0,-0.88,0)}$
Thus,
${\displaystyle e_{2}=0.4\cdot \pi _{1}^{T}\cdot h_{1}+0.6\cdot \pi _{2}^{T}\cdot h_{2}=0.4\times (0)+0.6\times (-26.4)=-15.84}$
${\displaystyle E_{2}=0.4\cdot \pi _{1}^{T}\cdot T+0.6\cdot \pi _{2}^{T}\cdot T=0.4\times (24,0)+0.6\times (19.2,0)=(21.12,0)}$
Since ${\displaystyle w_{2}=-15.84-21.12\cdot 4=-100.32>-182.992}$, add the cut
${\displaystyle 21.12x_{1}+\theta \geq -15.84}$

Iteration 3:

Step 1. The master program is

{\displaystyle {\begin{aligned}z=min\{10x_{1}&+15x_{2}+\theta |x_{1}+x_{2}\leq 12,x_{1}\geq 4,x_{2}\geq 2,\\&8.352x_{1}+18.048x_{2}+\theta \geq -5.2,21.12x_{1}+\theta \geq -15.84\}\end{aligned}}}
Result is ${\displaystyle z=-10.39375,x^{3}=(6.6828,5.3172)^{T},\theta ^{3}=-156.97994}$.

Step 2. No feasibility cut is needed.

Step 3.

• For ${\displaystyle \xi =\xi _{1}}$, solve:
${\displaystyle w=min\{-2.4y_{1}-2.8y_{2}|6y_{1}+10y_{2}\leq 400.968,8y_{1}+5y_{2}\leq 425.376,0\leq y_{1}\leq 50,0\leq y_{2}\leq 10\}}$
The solution is ${\displaystyle w_{1}=-140.6128,y^{T}=(46.922,10),\pi _{1}^{T}=(0,-0.3,0,-1.3)}$
• For ${\displaystyle \xi =\xi _{2}}$, solve:
${\displaystyle w=min\{-2.8y_{1}-3.2y_{2}|6y_{1}+10y_{2}\leq 400.968,8y_{1}+5y_{2}\leq 425.376,0\leq y_{1}\leq 30,0\leq y_{2}\leq 30\}}$
The solution is ${\displaystyle w_{2}=-154.7098,y^{T}=(30,22.0968),\pi _{2}^{T}=(-0.32,0,-0.88,0)}$
Thus,
${\displaystyle e_{3}=0.4\cdot \pi _{1}^{T}\cdot h_{1}+0.6\cdot \pi _{2}^{T}\cdot h_{2}=0.4\times (-13)+0.6\times (-26.4)=-21.04}$
${\displaystyle E_{3}=0.4\cdot \pi _{1}^{T}\cdot T+0.6\cdot \pi _{2}^{T}\cdot T=0.4\times (0,24)+0.6\times (19.2,0)=(11.52,9.6)}$
Since ${\displaystyle w_{3}=-21.04-11.52\cdot 6.6828-9.6\cdot 5.3172=-149.070976>-156.97994}$, add the cut
${\displaystyle 11.52x_{1}+9.6x_{2}+\theta \geq -21.04}$

Iteration 4:

Step 1. The master program is

{\displaystyle {\begin{aligned}z=min\{10x_{1}&+15x_{2}+\theta |x_{1}+x_{2}\leq 12,x_{1}\geq 4,x_{2}\geq 2,\\&8.352x_{1}+18.048x_{2}+\theta \geq -5.2,21.12x_{1}+\theta \geq -15.84,\\&11.52x_{1}+9.6x_{2}+\theta \geq -21.04\}\end{aligned}}}
Result is ${\displaystyle z=-8.895,x^{4}=(4,3.375)^{T},\theta ^{4}=-99.52}$.

Step 2. No feasibility cut is needed.

Step 3.

• For ${\displaystyle \xi =\xi _{1}}$, solve:
${\displaystyle w=min\{-2.4y_{1}-2.8y_{2}|6y_{1}+10y_{2}\leq 240,8y_{1}+5y_{2}\leq 270,0\leq y_{1}\leq 50,0\leq y_{2}\leq 10\}}$
The solution is ${\displaystyle w_{1}=-88.8,y^{T}=(30,6),\pi _{1}^{T}=(-0.208,-0.144,0,0)}$
• For ${\displaystyle \xi =\xi _{2}}$, solve:
${\displaystyle w=min\{-2.8y_{1}-3.2y_{2}|6y_{1}+10y_{2}\leq 240,8y_{1}+5y_{2}\leq 270,0\leq y_{1}\leq 30,0\leq y_{2}\leq 30\}}$
There are multiple optimal solutions. Selecting one of them, we have
${\displaystyle e_{4}=0}$
${\displaystyle E_{4}=(13.344,13.056)}$
Since ${\displaystyle w_{3}=0-13.344\cdot 4-13.056\cdot 3.375=-97.44>-99.52}$, add the cut
${\displaystyle 13.344x_{1}+13.056x_{2}+\theta \geq 0}$

Iteration 5:

Step 1. The master program is

{\displaystyle {\begin{aligned}z=min\{10x_{1}&+15x_{2}+\theta |x_{1}+x_{2}\leq 12,x_{1}\geq 4,x_{2}\geq 2,\\&8.352x_{1}+18.048x_{2}+\theta \geq -5.2,21.12x_{1}+\theta \geq -15.84,\\&11.52x_{1}+9.6x_{2}+\theta \geq -21.04,13.344x_{1}+13.056x_{2}+\theta \geq 0\}\end{aligned}}}
Result is ${\displaystyle z=-8.5583,x^{5}=(4.6667,3.625)^{T},\theta ^{5}=-109.6}$.

Step 2. No feasibility cut is needed.

Step 3.

• For ${\displaystyle \xi =\xi _{1}}$, solve:
${\displaystyle w=min\{-2.4y_{1}-2.8y_{2}|6y_{1}+10y_{2}\leq 280,8y_{1}+5y_{2}\leq 290,0\leq y_{1}\leq 50,0\leq y_{2}\leq 10\}}$
The solution is ${\displaystyle w_{1}=-100,y^{T}=(30,10),\pi _{1}^{T}=(0,-0.3,0,-1.3)}$
• For ${\displaystyle \xi =\xi _{2}}$, solve:
${\displaystyle w=min\{-2.8y_{1}-3.2y_{2}|6y_{1}+10y_{2}\leq 280,8y_{1}+5y_{2}\leq 290,0\leq y_{1}\leq 30,0\leq y_{2}\leq 30\}}$
The solution is ${\displaystyle w_{2}=-116,y^{T}=(30,10),\pi _{2}^{T}=(-0.232,-0.176,0,0)}$
Thus,
${\displaystyle e_{5}=0.4\cdot \pi _{1}^{T}\cdot h_{1}+0.6\cdot \pi _{2}^{T}\cdot h_{2}=0.4\times (-13)+0.6\times (0)=-5.2}$
${\displaystyle E_{5}=0.4\cdot \pi _{1}^{T}\cdot T+0.6\cdot \pi _{2}^{T}\cdot T=0.4\times (0,24)+0.6\times (13.92,14.08)=(8.352,18.048)}$
Since ${\displaystyle w_{5}=-5.2-8.352\cdot 4.6667-18.048\cdot 3.625=-109.6=\theta ^{5}}$, stop.
${\displaystyle x_{5}=(4.6667,3.625)^{T}}$ is the optimal solution.

## Applications

Apart from the process industry, two-stage linear stochastic programming finds application in other fields as well. For instance, in the optimal design of distributed energy systems, there are various uncertainties that need to be considered. Uncertainty is related to aspects such as demand and supply of energy, economic factors like unit investment cost and energy price, and uncertainty related to technical parameters like efficiency. [8], developed a two-stage stochastic programming model for the optimal design of a distributed energy system with a stage decomposition-based solution strategy. The authors accounted for both demand and supply uncertainty. They used the genetic algorithm on the first stage variables and the Monte Carlo method on the second-stage variables.

## Conclusion

From the previous examples, it is evident that two-stage linear stochastic programming finds applicability across many areas, such as the petrochemical, pharmaceutical industry, carbon capture, and energy storage among others. [1] Stochastic programming can primarily be used to model two types of uncertainties: 1) exogenous uncertainty, which is the most widely considered one, and 2) endogenous uncertainty, where realization regarding uncertainty depends on the decision taken. The main challenge, with respect to stochastic programming, is that the type of problems that can be solved is limited. An ‘ideal’ problem would be multi-stage stochastic mixed-integer nonlinear programming under both exogenous and endogenous uncertainty with an arbitrary probability distribution that is stagewise dependent. [1] However, current algorithms, in terms of development and computation resources, are still limited with respect to the ability to solve the ‘ideal’ problem.

## References

1. Li Can, Grossmann Ignacio E. “A Review of Stochastic Programming Methods for Optimization of Process Systems Under Uncertainty,” Frontiers in Chemical Engineering 2021, Vol. 2
2. J. Schif "The L Shaped Algorithm"
3. Dantzig, George B. “Linear Programming under Uncertainty.” Management Science, vol. 1, no. 3-4, 1955, pp. 197–206.
4. Chu, Yunfei, and Fengqi You. “Integration of Scheduling and Dynamic Optimization of Batch Processes under Uncertainty: Two-Stage Stochastic Programming Approach and Enhanced Generalized Benders Decomposition Algorithm.” Industrial & Engineering Chemistry Research, vol. 52, no. 47, 2013, pp. 16851–16869.
5. Barik, S.K., Biswal, M.P. & Chakravarty, D. "Two-stage stochastic programming problems involving interval discrete random variables." OPSEARCH 49, 280–298 (2012).
6. Soares, Joao, et al. “Two-Stage Stochastic Model Using Benders’ Decomposition for Large-Scale Energy Resource Management in Smart Grids.” IEEE Transactions on Industry Applications, vol. 53, no. 6, 2017, pp. 5905–5914.
7. Birge, John R., and François Louveaux. "Introduction to Stochastic Programming." Springer, 2011.
8. Zhe Zhou, Jianyun Zhang, Pei Liu, Zheng Li, Michael C. Georgiadis, Efstratios N. Pistikopoulos, “A two-stage stochastic programming model for the optimal design of distributed energy systems,” Applied Energy, Volume 103, 2013, Pages 135-144, ISSN 0306-2619.
9. Qiong Tang, Zhuo Fu, Dezhi Zhang, Hao Guo, Minyi Li, "Addressing the Bike Repositioning Problem in Bike Sharing System: A Two-Stage Stochastic Programming Model," Scientific Programming, vol. 2020, Article ID 8868892, 12 pages, 2020.