Vaccine Supply Chain Optimization Problem for Covid19 Pandemic Crisis

This problem represents the optimal planning of COVID-19 vaccine supply chain between Vaccine Storage Units and Vaccination Centers. The goal of the problem is to minimize the total costs, including storage, transportation costs and extra transportation costs due to different supply conditions of each vaccine.

Vaccine Supply Chain
image.png

As it can be seen in the above visual, Vaccine Supply Chain is very huge and it is quite important. However, in this optimization problem, only the supply chain between vaccine storages and local vaccination centers has been illustrated simply.

Problem Description

First, vaccines that are supplied from factories arrive to the Vaccine Stroge Units(VSU). After arriving to the VSU, according to the demand of each Vaccine Center (VC), vaccines are transferred to the VCs. However, there are vaccines that remain after this process due to the stock and demand of each vaccine. In this case, there are holding costs for both VSUs and VCs to store the vaccines. All vaccine types' stocks at Vaccine Stroge Units (VSU), their demands at Vaccination Centers (VC), and their extra costs due to their stroge requirements are provided.

In the problem, three vaccines with different characteristics are studied. In particular, the vaccines of AstraZeneca, Moderna and Pfizer are considered. Each vaccine type has different holding requirements, deep freezers (−70 °C) are required for Pfizer and regular freezers (−20 °C) for Moderna vaccines, while simple refrigeration is enough for AstraZeneca. As each vaccine has different requirements for supplying, extra supply chain cost for each vaccine was determined. Pfizer has the highest cost as its transportation expenses are higher, and Moderna has the second highest price while AstraZeneca has the least price. Moreover, the capacity of holding the vaccines at both VSUs and VCs was determined randomly by generating the random number of refrigerations for each type of vaccine. Then these numbers are multiplied by 100, because it has been assumed that each freezer could keep 100 units. In this problem, each VSU and VC have each type of refrigeration technologies. Therefore, there is no zero capacity. However, as the problem is continous linear problem, this situation also can be examined when the associated data provided.

Model Sets and Parameters

In this problem, there are 3 types of vaccines, five Vaccine Stroge Units and 13 Vaccination Centers, each with a known demand for each vaccine. Vaccination centers' demand can be supplied from five VSUs. There are known costs associated with transporting each type of vaccine, from a VSU to a VC.

-Shipping distance between VSUs and VCs are given in the following table:

Distance between VSUs and VCs VC1 VC2 VC3 VC4 VC5 VC6 VC7 VC8 VC9 VC10 VC11 VC12 VC13
VSU1 3.29 3.32 3.13 3.16 3.14 3.58 5.58 8.72 9.13 3.95 7.79 7.11 4.27
VSU2 4.13 5.69 8.67 7.9 7.71 5.47 5.72 6.32 4.28 8.31 9.55 3.25 1.44
VSU3 2.49 6.80 2.76 8.59 4.72 2.38 7.50 4.34 7.19 5.36 5.16 8.37 8.81
VSU4 6.36 4.65 8.22 7.16 8.55 2.47 7.69 2.45 6.77 1.03 5.33 1.31 6.25
VSU5 3.21 3.43 6.13 2.39 8.74 6.68 4.00 4.19 8.95 7.29 6.16 4.93 8.33

-Stocks for each Vaccine type at each VSU:

Vaccine Stroge Units (in vials) VSU1 VSU2 VSU3 VSU4 VSU5
Pfizer 1850 2450 1735 2500 1400
Moderna 1600 2400 1200 2100 3500
AstraZeneca 4000 3800 2800 4100 3800

-Stocks capacity after shipping to VCs for each Vaccine type at each VSU:

Vaccine Stroge Capacity Units (in vials) VSU1 VSU2 VSU3 VSU4 VSU5
Pfizer 1700 4500 2200 3100 1100
Moderna 2700 2100 1800 2000 3800
AstraZeneca 4700 4100 2100 4200 3800
Holding Cost(€) 7.0 5.0 7.5 7.0 4.0

-Each vaccine can be shipped from a Vaccine Storage Unit to a set of vaccination centers. The flow amount is depending on each Vaccination center demands.

Vaccine Demands VC1 VC2 VC3 VC4 VC5 VC6 VC7 VC8 VC9 VC10 VC11 VC12 VC13
Pfizer 1100 750 375 580 950 970 440 745 465 631 920 1260 730
Moderna 960 885 505 1040 920 720 460 1100 830 820 495 970 960
AstraZeneca 2430 1500 990 870 1140 2060 1010 1620 1390 910 420 1890 510

-Each vaccination center has a maximum capacity of storing the vaccines. Vaccine centers can hold the vaccines more than demand if the capacity constarints is provided, therefore, vaccines can be kept at VCs until they are used for the people.

Vaccine Capacity VC1 VC2 VC3 VC4 VC5 VC6 VC7 VC8 VC9 VC10 VC11 VC12 VC13
Pfizer 1400 800 500 600 955 975 445 750 475 635 930 1300 740
Moderna 1000 890 510 1050 950 750 500 1105 840 830 500 980 980
AstraZeneca 2600 1700 1200 950 1400 2400 1200 2000 1800 1300 800 2400 600
Holding Cost(€) 3.5 8.0 9.7 6.5 4.5 5.0 9.0 8.0 7.2 8.4 4.2 3.6 9.5

-Extra Shipping cost (Extra shipping cost*Amount of vaccine units) of each vaccine (in units) from the VSUs to the VCs.

Extra Shipping Cost Cost (in euros per unit)
Pfizer x 6.5
Moderna x 4.75
AstraZeneca x 2.25

The question to be answered is how to satisfy the demand of the each Vaccination Center while minimizing the total cost.


a) Model Formulation

Sets and Indices

$f \in \text{Vaccine Storage Units}=\{\text{VSU1}, \text{VSU2}, \text{VSU3},\text{VSU4},\text{VSU5}\}$

$d \in \text{Vaccine Centers}=\{\text{VC 1}, \text{VC 2}, \text{VC 3}, \text{VC 4}, \text{VC 5}, \text{VC 6}, \text{VC 7}, \text{VC 8}, \text{VC 9}, \text{VC 10}, \text{VC 11}, \text{VC 12}, \text{VC 13}\}$

$v \in \text{Vaccines}=\{\text{Pfizer}, \text{Moderna}, \text{AstraZeneca}\}$

Parameters

$\text{Tc} \in \mathbb{R}^+$: Transportation cost per distance units.

$\text{Hc}_{f} \in \mathbb{R}^+$: Holding cost at VSUs in vials (€).

$\text{Hc}_{d} \in \mathbb{R}^+$: Holding cost at VCs in vials (€).

$\text{dist}_{f,d} \in \mathbb{R}^+$: Distance of shipping units from VSU $f$ to vaccination center $d$.

$\text{extracost}_{v} \in \mathbb{R}^+$: Extra shipping cost for each type of vaccine $v$.

$\text{stock}_{v,f} \in \mathbb{R}^+$: Stock of each vaccine $v$ at VSUs $f$ that distributed from factories (in units).

$\text{storage_cap}_{v,f} \in \mathbb{R}^+$: Maximum possible stroge of vaccine $v$ at VSU $f$ (in units).

$\text{cap}_{v,d} \in \mathbb{R}^+$: Maximum possible storage for each vaccine $v$ at vaccine center $d$ (in units).

$\text{demand}_{v,d} \in \mathbb{R}^+$: Demand for each vaccine $v$ at each vaccine center $d$ (in units).

Decision Variables

$\text{X}_{v,f,d} \in \mathbb{N}^+$: Quantity of vaccines $v$ (in units) that is shipped from source $f$ to destionation $d$.

Objective Function

\begin{equation} \text{Minimize} \quad Z = \sum_{v=1}^{V}\sum_{f=1}^{F}\sum_{d=1}^{D}extracost_{v}*X_{v,f,d}+ \sum_{f=1}^{F}\sum_{d=1}^{D}*Tc*dist_{f,d}+ \sum_{f=1}^{F}\sum_{v=1}^{V}\sum_{d=1}^{D}Hc_{f}*(stock_{v,f}-X_{v,f,d})+ \sum_{d=1}^{D}\sum_{v=1}^{V}\sum_{f=1}^{F}Hc_{d}*(X_{v,f,d}-demand_{v,d})\\ \end{equation}

Constraints

\begin{equation} \sum_{f=1}^{F}\sum_{v=1}^{V}\sum_{d=1}^{D}(stock_{v,f}-X_{v,f,d}) \geq \sum_{f=1}^{F}\sum_{v=1}^{V}stock{v,f}*0.80 \quad \forall f,v \in \text{Vaccines, Vaccine Storage Units} \end{equation} \begin{equation} \sum_{f=1}^{F}\sum_{v=1}^{V}\sum_{d=1}^{D}(stock_{v,f}-X_{v,f,d}) \geq 2 \quad \forall f,v \in \text{Vaccines, Vaccine Storage Units} \end{equation} \begin{equation} \sum_{f=1}^{F}\sum_{d=1}^{D}\sum_{v=1}^{V}(stock_{v,f}-X_{v,f,d}) \leq \sum_{f=1}^{F}\sum_{v=1}^{V}storagecap_{v,f} \quad \forall v,f \in \text{Vaccines, Vaccine Storage Units} \end{equation} \begin{equation} \sum_{d=1}^{D}\sum_{v=1}^{V}\sum_{f=1}^{F}X_{v,f,d} \geq \sum_{d=1}^{D}\sum_{v=1}^{V}demand_{v,d} \quad \forall v,d \in \text{Vaccines, Vaccination Centers} \end{equation} \begin{equation} \sum_{d=1}^{D}\sum_{v=1}^{V}\sum_{f=1}^{F}X_{v,f,d} \leq \sum_{d=1}^{D}\sum_{v=1}^{V}cap_{v,d} \quad \forall v,d \in \text{Vaccines, Vaccination Centers} \end{equation}

b) Solving the Model in Pyomo

Data of the Vaccine Model

Vaccine model sets, parameters, variables, objective function and constraints:

c) Computing Sensitivities associated with each constraint

Interpretation of the sensitivity analysis

Thanks to the sensitivity analysis, the most important constraints of the model can be determined. Each active constraint has an associated 'shadow price' as shown in the above sensitivity results of each constraint. For inequality constraints in a minimization problem, a positive optimal dual value in ">=" constraint is active, and a negative optimal dual value indicates that "<=" inequality constraint is active ´n the solution.

Sensitivity Analysis Results:

d) Generating Integer Optimization Problem from the Initial Optimization Model

Interpretation of the Results of the Integer Problem

e) Relaxed Problem

In this part, the binary variable which has been added to the optimazition problem is relaxed by changing its domain from Binary to NonNegativeReals and adding extended boundries.

In this step, minimum boundary is 0 and for the maximum boundary, less than 1 and more than 1 upper boundary values has been tested.\

I wanted to do this analysis that is running the model with different upper boundaries in order to see the effects of the objective function and Y decision variable with the boundary in the relaxed problem.

Comparison and Interpratation of the solutions for both integer and relaxed problems

After relaxing the integer problem, the objective function result has been changed according to the upper boundary. For 1, the OF has't changed, however, after simulating with different bounds, it can be seen on the above graph that while the boundaries are relaxed more, the total cost decreases, because the problem has been relaxed.

f) Solving several instances with different numbers of variables using randomly generated data.

In this step, the integer problem was solved with several instances. In order to do that i value was iterated in range(2,20). Finally, the execution times were printed and plotted.

Interprating the execution times

During iteration, first, the model has been run with less decision variables and then nnumber of variables has been increaed slightly. Moreover, when increasing the instances' size, the execution time went up as well.

g) Several Instances with the same data

For the integer problem in d), solve several instances with the same data, using (10 to 20) different values for one of the parameters in the model (choose a parameter you think may provide insights for the interpretation of the different solution values). Collect the resulting optimal values of the objective function, print and plot them. Comment on these values.

1) Changing the Limit of Travels between VSUs and VCs

2) Changing the Demand Parameter at VC

3) Changing the Stock Parameter at VSU

4) Changing the Capacity Parameter at VSU