# A Heuristic for the Two-Echelon Multi-Period Multi-Product Location–Inventory Problem with Partial Facility Closing and Reopening

^{1}

^{2}

^{3}

^{*}

## Abstract

**:**

## 1. Introduction

## 2. Literature Review

## 3. Proposed Mathematical Formulation

#### 3.1. Problem Description

#### 3.2. Notations

#### 3.2.1. Deterministic Parameters

- F
^{1}= Set of candidate warehouses. - F
^{2}= Set of candidate hubs. - F = Set of candidate facilities F
^{1}∪ F^{2}. - CL = Set of modular capacity levels = {0, 1, …, NCL}.
- G = Set of products.
- C = Set of customers.
- T = Set of time periods.
- N
_{t}= Number of days in period t. - W = Weight of total number of different located facilities over the planning horizon.
- α = Probability of unfulfilled demand during the lead time at warehouses.
- β = Maximum probability of inventory capacity violation at warehouses.
- γ = Maximum probability of violation of daily throughput capacity at hubs.
- z
_{1−}_{α}= The lower 100(1 − α) percentage points of standard normal distribution. - d
_{ij}= Roadway distance between nodes i and j. - rUL = A fraction of inventory capacity as a practical upper limit of reorder point at warehouses.
- rLL = A fraction of maximum order quantity as a lower limit of the implied maximum order quantity.

- AllCap
_{i,t}= Overall open capacity for combined products at facility i ∈ F in period t.

- l
_{ig}and n_{ig}= Initial open capacity level and initial existing capacity level at facility i. - RC
_{wg}= Unit transportation cost between plant and warehouse w (USD/product unit/day). - TC
_{ig}= Unit transportation cost for vehicles based at facility i ∈ F (USD/distance unit/product unit). - OC
_{wg}= Fixed ordering cost at warehouse w (USD/order). - HC
_{wg}= Unit holding cost at warehouse w (USD/product unit/day). - LT
_{wg}= Lead time that the plant takes to fulfill an order from warehouse w (day).

- μ
_{cgt}and σ^{2}_{cgt}= Mean and variance of stochastic daily demand of customer c (independent and normally distributed across products, customers, and periods) (product unit/day and (product unit/day)^{2}).

- Cap
_{ilg}= Facility capacity (inventory capacity for warehouse and daily throughput capacity for hub) for l open capacity levels (product unit). - Q
_{wlg}^{max}= Maximum order quantity which can be set as the vehicle capacity from the plant to warehouse w with l open capacity levels (product unit). - CON
_{ilg}= Cost for constructing l capacity levels (USD). - OF
_{ilg}= Operating fixed cost with l open capacity levels during a period (USD). - NF
_{ilg}= Non-operating fixed cost to maintain l temporarily closed capacity levels during a period (USD). - Reopen
_{ilg}= Cost to reopen l capacity levels (USD). - Close
_{ilg}= Cost to temporarily close l capacity levels (USD).

- f
_{lp,l,np,n}^{igt}= Capacity adjustment cost (USD) to change from open and existing capacity levels (lp, np) in period t − 1 to (l, n) in period t, calculated from Equation (1) [13]:

_{lp,l,np,n}

^{igt}= CON

_{i,ncon,g}+ OF

_{i,nof,g}+ NF

_{i,nnf,g}+ Reopen

_{i,nreo,g}+ Close

_{i,nclo,g}

- ncon = n − np Capacity levels to be constructed in period t.
- nof = l Open capacity levels to be operated in period t.
- nnf = n − l Temporarily closed capacity levels to be maintained in period t.
- nreo = max{0, (l − lp)-(n − np)} Capacity levels to be reopened in period t.
- nclo = max{0, (lp − l) + n − np} Capacity levels to be closed temporarily in period t.

_{0,2,1,4}

^{igt}with ncon= 2, nreo = 0, and nclo = 1. Table 2 illustrates additional examples of ncon, nreo, and nclo for determining the capacity adjustment cost.

#### 3.2.2. Decision Variables

- yy
_{i}= 1 If facility i ∈ F is established over the planning horizon; and 0 otherwise. - ${y}_{lp,l,np,n}^{i,g,t}$ = 1 If facility I ∈ F changes its capacity levels (lp, np) in period t − 1 to (l, n) in period t for product g; and 0 otherwise ∀lp ≤ np, l ≤ n, np ≤ n.
- ${x}_{(w,l,n),(h,\widehat{l},\widehat{n})}^{cgt}$ = 1 If product-g period-t demand of customer c is served by hub h with capacity levels ($\widehat{l},\widehat{n}$), which is served by warehouse w with capacity levels (l, n); and 0 otherwise.
- RP
_{wgt}; SS_{wgt}; Q_{wgt}= Reorder point; safety stock; order quantity for product g at warehouse w in period t (product unit). - ED
_{igt}and VD_{igt}= Mean and variance of D_{igt}, daily product-g demand served by facility i ∈ F in period t (product unit/day and (product unit/day)^{2}). - AllCap
_{i,t}= Overall open capacity of combined products at facility i ∈ F in period t (product unit).

#### 3.3. Mathematical Model

_{ig}and n

_{ig}. For each product, period, and facility, Constraint (8) ensures that at most one capacity adjustment variable is selected. Constraints (9) and (10) are the relationships between demand allocation variables and facility capacity adjustment variables in each period.

_{wgt}falls below the reorder point RP

_{wgt}, an order quantity Q

_{wgt}is triggered, which will be received after the lead time LT

_{wg}. When an order is submitted to the warehouse, the inventory level should cover the stochastic demand during the lead time (D

_{wgt}LT

_{wg}) with probability 1 − α: Prob(D

_{wgt}LT

_{wg}≤ RP

_{wgt}) = 1 − α. Standardizing D

_{wgt}LT

_{wg}in this inequality yields Constraint (18), which determines reorder points and safety stocks. The stochastic inventory capacity chance constraints ensure that the peak inventory level (RP

_{wgt}− D

_{wgt}LT

_{wg}+ Q

_{wgt}) at the order arrival is within the inventory capacity Cap

_{wlg}at the warehouse with probability 1 − β: Prob(RP

_{wgt}− D

_{wgt}LT

_{wg}+ Q

_{wgt}≤ Cap

_{wlg}) ≥ 1 − β. Substituting (18) and standardizing D

_{wgt}LT

_{wgt}in this inequality yields Constraint (11). We propose Constraint (12), which is the chance constraint ensuring that the served daily demand is within the daily throughput capacity at hubs with probability 1 − γ:

_{i}.

## 4. Proposed Multi-Start Construction and Tabu Search Improvement Heuristic

Algorithm 1: MS-CTSIH(strategy s) |

Algorithm 2: Modified MS-CTSIH |

- Additional Variables for the Current Solution
- LF
_{g,t}^{v}= The set of located facilities for echelon v, product g, and period t (facilities are warehouses if v = 1 and hubs if v = 2); UF_{g,t}^{v}= F^{v}\LF_{g,t}^{v}. - N
_{igt}^{allocated}= The set of demand nodes serviced by facility i ∈ F for product g and period t, i.e., customers serviced by hub h in the second-echelon problem, and hubs serviced by warehouse w in the first-echelon problem. - L_F
_{g}^{v}= The set of located facilities for echelon v and product g; U_F_{g}^{v}= F^{v}\L_F_{g}^{v}. - L__F
^{v}= The set of located facilities for echelon v; U__F^{v}= F^{v}\L__F^{v}. - ocl
_{igt}and ecl_{igt}= Open and existing modular capacity levels for facility i ∈ F, product g, and period t. - EnterP
_{ig}= The earliest period that facility i ∈F is constructed to serve product g, e.g., hub h_{1}is located from periods 3 to 10 to serve product g1; then EnterP_{h1,g1}= 3. - Enter_P
_{i}= The earliest period that facility i ∈ F is constructed to serve any product. - z = The objective value of the current solution.
- z*= The objective value of the best solution found so far.
- z′* = The objective value corresponding to the best move.
- Algorithmic Variables
- tabu
_{i}= The last iteration number that a move of node i (demand or facility location) is prohibited. - tenure = Number of iterations that a move is prohibited.
- freq
_{ig}= The frequency that facility i ∈ F enters L_F_{g}^{v}(i.e., unlocated facility i becomes a located facility serving product g) in the current solution. - freq
_{i}= The frequency that facility i enters L__F^{v}in the current solution. - Algorithmic Parameters
- max_it
_{2}= Maximum number of non-improvement iterations. - div_it
_{2}= Number of non-improvement iterations to activate the diversification procedure in the facility replacement phase (note that div_it_{2}< max_it_{2}). - MS_iterations = Number of multi-start iterations.

#### 4.1. Stage I: Construction

_{lp,l,np,n}

^{igt}. The objective function z

^{v}for echelon v is determined (see Equation (2)). The best solution found in echelon v is set to this current solution. After the initial solution is constructed, the frequency counters (freq

_{ig}and freq

_{i}) are initialized for tabu search in Stage II to keep track of how often each facility enters the current solution (i.e., how often facility i serving product g is removed from U_F

_{g}

^{v}and inserted into L_F

_{g}

^{v}and how often facility i is removed from U__F

^{v}and inserted into L__F

^{v}). Then, freq

_{ig}and freq

_{i}are used in the diversification procedures to diversify the current solution in the facility replacement phase (Algorithm 3).

Algorithm 3: Construct_Solution(v) |

#### 4.1.1. Procedure Build_Feasible_Solution(v,g,t)

_{g,t−}

_{1}

^{v}, their open and existing capacity levels, and facility_sequence(v,g,t) as input. The procedure sequentially selects a facility i from facility_sequence(v,g,t) where the facilities in LF

_{g,t−}

_{1}

^{v}are considered first and the other unlocated facilities are considered according to their orders in the sequence. The selected facility i is located by inserting i into LF

_{g,t}

^{v}with its greatest feasible open capacity ocl

_{igt}with respect to Constraint (19) (i.e., constraint of overall open capacity of combined products). The existing capacity level ecl

_{igt}is max{ocl

_{igt}, ecl

_{i,g,t−}

_{1}}, which implies that the existing modular capacity level cannot be permanently closed (i.e., ecl

_{igt}≥ ecl

_{i,g,t−}

_{1}). The number of temporarily closed capacity levels is ecl

_{igt}− ocl

_{igt}, and the number of new modular capacity levels to be constructed is ecl

_{igt}− ecl

_{i,g,t}−

_{1}. The feasibility of LF

_{g,t}

^{v}is checked by calling Allocate_Demand_Node(v,g,t). These steps are iterated until all demand nodes are served (Algorithm 4).

Algorithm 4: Build_Feasible_Solution(v,g,t) |

_{igt}= 0 and ecl

_{igt}= ecl

_{i,g,t−1}. Second, any redundant open capacity levels and redundant existing capacity levels in the current solution are eliminated. However, the existing capacity level of a located facility in period t cannot be lower than that in period t − 1 (see Equation (6)). Third, the estimated cost EC

_{gt}

^{v}is determined from Equations (3) and (4). Note that the procedure Build_Feasible_Solution(v,g,t) is employed in the construction stage and also in the improvement stage for reconstructing a feasible solution.

#### 4.1.2. Procedure Allocate_Demand_Nodes(v,g,t)

_{g,t}

^{v}, the demand nodes are sequentially allocated to these facilities with the least transportation cost while maintaining feasibility (Constraints (12)–(14), (16) and (17)) to determine N

_{igt}

^{allocated}∀i ∈ LF

_{g,t}

^{v}. The demand nodes are allocated in descending order of the demand size. For the first echelon (v = 1), the transportation cost for warehouse w to serve hub h is (RC

_{wgt}+ TC

_{wgt}·2·d

_{wh})·ED

_{hgt}. For the second echelon (v = 2), the transportation cost for hub h to serve customer c is TC

_{hgt}·2·d

_{hc}·μ

_{cgt}. After the procedure is completed, if there is any unserved demand node, the procedure returns infeasibility. To satisfy Constraints (9) and (10), if there is a located facility i that does not serve any demand node (N

_{igt}

^{allocated}= ∅), its open capacity is set to zero (ocl

_{igt}= 0) (Algorithm 5).

Algorithm 5: Allocate_Demand_Node(v,g,t) |

#### 4.1.3. Procedure Determine_Inventory_Policies(g,t)

_{wgt}and VD

_{wgt}, the optimal order quantity Q

_{wgt}can be approximated by Karush–Kuhn–Tucker conditions [35] as shown in Equation (23), guaranteeing the feasibility of Constraints (11) and (15).

_{wgt}and safety stocks SS

_{wgt}are determined from Constraint (18) (Algorithm 6).

Algorithm 6: Determine_Inventory_Policies(g,t) |

#### 4.2. Stage II: Improvement

Algorithm 7: Improve_Solution(v,s) |

#### 4.2.1. Procedures Insert_Demand_Node(v,g,t,s) and Swap_Demand_Node(v,g,t,s)

Algorithm 8: Insert_Demand_Node(v,g,t,s)/Procedure Swap_Demand_Node(v,g,t,s) |

#### Sub-Procedure find_best_demand_node_insertion_move(v,g,t)

_{i*,g,t}

^{allocated}and insert j* into N

_{i’*,g,t}

^{allocated}with the feasibility of Constraints (16) and (17) for echelon v = 1 and the feasibility of Constraints (12), (16) and (17) for v = 2. The other constraints are not affected by this move (Algorithm 9).

Algorithm 9: Sub-procedure find_best_demand_node_insertion_move(v,g,t) |

#### Sub-Procedure find_best_demand_node_swap_move(v,g,t)

_{i*,g,t}

^{allocated}and j’* from N

_{i’*,g,t}

^{allocated}, and inserts j* into N

_{i’*,g,t}

^{allocated}and j’* into N

_{i*,g,t}

^{allocated}while maintaining the feasibility of Constraints (16) and (17) for v = 1 and the feasibility of Constraints (12), (16) and (17) for v = 2. The other constraints are not impacted by this move (Algorithm 10).

Algorithm 10: Sub-procedure find_best_demand_node_swap_move(v,g,t) |

#### 4.2.2. Procedures Replace_Facility(v,g,s) and Add_Facility(v,g,s)

_{g}

^{v}entering in period t_enter = EnterP

_{ig}and serving product g by each unlocated facility i’ ∈ U_F

_{g}

^{v}. The affected parts of the current solution from period t_enter to |T| for product g are destroyed and repaired by calling Build_Feasible_Solution(v,g,t) such that i ∈ UF

_{gt}

^{v}, j ∈ LF

_{gt}

^{v}, and EnterP

_{i’,g}= t_enter. The procedure Replace_Faciltiy(v,g,s) calls the nested tabu search procedures according to improvement strategy s (see Table 3) after implementing a feasible move. Furthermore, the diversification procedure is employed in Replace_Facility(v,g,s) to escape from the local optimum by diversifying the current solution. If the diversification activation criterion (i.e., it

_{2 =}div_it2) is satisfied, the diversification procedure tries replacing half of the located facilities i∈ L_F

_{g}

^{v}with greater freq

_{ig}with unlocated facilities j ∈ U_F

_{g}

^{v}with lower freq

_{jg}. The affected parts in the current solution are destroyed from the first affected period to |T| and repaired by calling Build_Feasible_Solution(v,g,t).

_{g}

^{v}to serve product g by entering it at each existing entering period t_enter ∈{EnterP

_{jg}∀j ∈ L_F

_{g}

^{v}}. The destroy and repair approach similar to that in Replace_Facility(v,g,s) is employed. The procedure Add_Faciltiy(v,g,s) calls the nested tabu search procedures according to the improvement strategy s as shown in Table 3. Replace_Faciltiy(v,g,s) and Add_Facility(v,g,s) share common steps, as shown below (Algorithm 11).

Algorithm 11: Replace_Facility(v,g,s)/Procedure Add_Facility(v,g,s) |

#### Sub-Procedure find_best_facility_replacement_move(v,g)

_{g}

^{v}with its entering period t_enter = EnterP

_{ig}, removes i’ from U_F

_{g}

^{v}, destroys the current solution from period t_enter to |T|, and repairs the current solution by calling Build_Feasible_Solution(v,g,t) such that i ∈ UF

_{gt}

^{v}, i’ ∈ LF

_{gt}

^{v}, and EnterP

_{i’,g}= t_enter. The destroy and repair approach is employed because simply replacing i by i’ greatly impacts the feasibility of the current solution from period t_enter to |T| (Algorithm 12).

Algorithm 12: Sub-procedure find_best_facility_replacement_move(v,g) |

#### Sub-Procedure find_best_facility_addition_move(v,g)

_{jg}∀j ∈ L_F

_{g}

^{v}} (i.e., each entering period of a located facility in the current solution), an addition move allows an unlocated facility I ∈ U_F

_{g}

^{v}to enter the current solution in period t_enter. This move destroys the current solution from period t_enter onwards and repairs the current solution by calling Build_Feasible_Solution(v,g,t) such that i ∈ LF

_{gt}

^{v}. The destroy and repair approach is employed because the demand allocations are required to re-allocate demands to the new set of located facilities from period t_enter onwards (Algorithm 13).

Algorithm 13: Sub-procedure find_best_facility_addition_move(v,g) |

#### 4.2.3. Procedures Replace_Facility(v,s) and Add_Facility(v,s)

^{v}serving all products by each unlocated facility j ∈ U__F

^{v}. Replace_Facility(v,s) is similar to Replace_Facility(v,g,s). The destroy and repair approach in Replace_Facility(v,s) considers all products over the affected periods, whereas that in Replace_Facility(v,g,s) considers only product g. The nested tabu search procedures in Replace_Facility(v,s) thoroughly search the feasible region for all products according to improvement strategy s as shown in Table 3, whereas those in Replace_Facility(v,g,s) search the feasible region only for product g. The diversification procedure employed in Replace_Facility(v,s) tries replacing half of located facilities i ∈ L__F

^{v}with greater freq

_{i}by unlocated facilities i’ ∈ U__F

^{v}with lower freq

_{i′}.

^{v}to serve any product by entering it at each existing entering period t_enter∈{Enter_P

_{j}∀j ∈ L__F

^{v}}. The destroy and repair approach in Add_Facility(v) considers all products over the affected periods. The nested tabu search procedures in Add_Facility(v,s) thoroughly search the feasible region for all products according to improvement strategy s (see Table 3). Note that Replace_Facility(v,s) and Add_Facility(v,s) can perform better than Replace_Facility(v,g,s) and Add_Facility(v,g,s) when the weight of total number of different located facilities W is relatively high (Algorithm 14).

Algorithm 14: Replace_Facility(v,s)/Procedure Add_Facility(v,s) |

#### Sub-Procedure find_best_facility_replacement_move(v)

^{v}with its entering period t_enter = Enter_P

_{i}, removes i’ from U__F

^{v}, destroys the current solution from period t_enter to |T|, and repairs the current solution by calling Build_Feasible_Solution(v,g,t) ∀g ∈ G such that i ∈ UF

_{gt}

^{v}, i’ ∈ LF

_{gt}

^{v}and Enter_P

_{i’}= t_enter (Algorithm 15).

Algorithm 15: Sub-procedure find_best_facility_replacement_move(v) |

#### Sub-Procedure find_best_facility_addition_move(v)

_{j}∀j ∈ L__F

^{v}} (i.e., each entering period of a located facility in the current solution), an addition move allows an unlocated facility i ∈ U__F

^{v}to enter the current solution in period t_enter. This move destroys the current solution from period t_enter onwards and repairs the current solution by calling Build_Feasible_Solution(v,g,t) ∀g ∈ G such that i ∈LF

_{gt}

^{v}(Algorithm 16).

Algorithm 16: Sub-procedure find_best_facility_addition_move(v) |

## 5. Computational Experiences

#### 5.1. Data

#### 5.1.1. Large Problem Instance

_{c,g}

_{1,t1}, μ

_{c,g}

_{2,t1}, and μ

_{c,g}

_{3,t1}are the respective C1, R1, and RC1 demands in Solomon [36]. The coefficient of variation of 0.5 is employed to determine the demand variances. The mean demands for other periods (t2 to t5) are assumed μ

_{c,g,t}= f(t,g) μ

_{c,g,t1}, where f(t,g) is a multiplicative factor for the mean demand of product g in period t, as shown in Table 4. There are three demand profiles for the three products. Product g1 has demand profile 1 representing an increasing trend over the horizon by the constant growth rate of 10 percent per period. Product g2 has demand profile 2 representing a fluctuating trend by the growth rates of 20, 20, −10, and −10 percent per period for periods t2, t3, t4, and t5, respectively. Product g3 has demand profile 3 representing a fluctuating trend by the growth rates of −10, −10, +20, and +20 percent per period for periods t2, t3, t4, and t5, respectively.

_{w,l}

_{1,g}and Cap

_{h,l}

_{1,g}) and associated operating fixed costs (OF

_{w,l}

_{1,g}and OF

_{h,l}

_{1,g}) for all products. The facility capacities and operating fixed costs for two and three modular capacity levels are two and three times as much, respectively, as those for one capacity level, e.g., Cap

_{w,l}

_{2,g}= 2*Cap

_{w,l}

_{1,g}. For warehouses, the maximum order quantity ${Q}_{wlg}^{\mathrm{max}}$ is assumed 0.25Cap

_{wlg}.

_{wg}are USD 1/product unit/day, unit transport costs from warehouses to hubs TC

_{wg}are USD 0.05/distance unit/product unit, unit ordering costs OC

_{wg}are USD 50/order, unit holding costs HC

_{wg}are USD 1/product unit/day, and lead times LT

_{wg}are 1 day. For all hubs and products, the unit transport costs from hubs to customers TC

_{hg}are USD 0.075/distance unit/product unit. For all facilities and periods, the overall capacities (AllCap

_{wt}and AllCap

_{ht}) are 10,000 product units. For all facilities, capacity levels, and products, the construction costs (CON

_{ilg}), non-operating fixed cost (NF

_{ilg}), temporary close costs (Close

_{ilg}), and reopen costs (Reopen

_{ilg}) are assumed to be generated by multiplying OF

_{ilg}with 10, 0.2, 0.25, and 0.5, respectively. There is not any located facility at period 0 for all products, i.e., l

_{ig}= n

_{ig}= 0 ∀i ∈ F, g ∈ G.

_{2}= 5 and div_it

_{2}= 4.

#### 5.1.2. Small Problem Instance

#### 5.2. Experimental Results

#### 5.2.1. Comparison of Improvement Strategies

^{6}, implying that facility_sequence(v,g,t) in multi-start iteration 0 (i.e., in the descending order of the maximum capacity) cannot yield the best solution. At W = 10

^{7}, the two strategies cannot find an improved solution over the 100 multi-start iterations. This means that facility_sequence(v,g,t) in multi-start iteration 0 can yield the least number of facilities on the large instance. However, this is not always the case, as Table 7b shows that the multi-start iterations cannot yield an improved solution on the small instance when W is up to 10

^{6}but can yield an improved solution when W = 10

^{7}. From Table 7, as W decreases from 10

^{7}to 0, the number of facilities is non-decreasing on the small instance and increases on the large instance, as expected.

#### 5.2.2. Comparison of Proposed Heuristic and Analytical Solution Method

^{7}.

^{7}and the relative optimality gap of 13.10% (the lower bound of 3.62069 × 10

^{7}). The modified heuristic takes 0.527 min to find a solution with the objective value of 3.84284 × 10

^{7}and the relative optimality gap of 5.78%. The modified algorithm yields the solution with the better relative optimality gap and much faster than GAMS/BARON. This shows the efficiency and effectiveness of the proposed heuristic on a small instance.

#### 5.2.3. Examination of Heuristic Solution on the Small Problem Instance

^{7}is examined to illustrate the feasibility and characteristics of the best solution found. From Table 8, in the best solution found, the single warehouse w2 is constructed in period t1 to serve both products. Hubs h1 and h3 are constructed in period t1 to serve product g1. For product g2, only hub h1 is constructed in period t1 and hub h3 is constructed later in period t2 to accommodate the increasing demand profile for product g2.

_{w}

_{2,g1,t2}+ (z

_{1−}

_{α}+ z

_{1−}

_{β})*LT

_{w2,g1}*(VD

_{w2,g1,t2})

^{0.5}= 100 + (1.96 + 1.96)*1*(660.94)

^{0.5}= 200.8 product units that requires two open modular capacity levels (Cap

_{w}

_{2,l2,g1}= 400 product units) as opposed to one open capacity level (Cap

_{w}

_{2,l1,g1}= 200 product units) in order to satisfy this constraint.

_{wgt}= N

_{t}HC

_{wg}(Q

_{wgt}/2 + z

_{1−}

_{α}LT

_{wg}(VD

_{wgt})

^{1/2})

_{wgt}= N

_{t}OC

_{wg}ED

_{wgt}/Q

_{wgt}

_{wgt}= N

_{t}RC

_{wg}ED

_{wgt}

_{w}

_{2,g1,t1}= 100 product units, RP

_{w}

_{2,g1,t1}= 257.19 product units, SS

_{w}

_{2,g1,t1}= 67.19 product units, hc

_{w}

_{2,g1,t1}= USD 42,773, oc

_{w}

_{2,g1,t1}= USD 34,675, and rc

_{w}

_{2,g1,t1}= USD 69,350. These are obtained by substituting z

_{1−}

_{α}= z

_{1−}

_{β}= 1.96, HC

_{w}

_{2,g1}= 1, OC

_{w}

_{2,g1}= 50, RC

_{w}

_{2,g1}= 1, LT

_{w}

_{2,g1}= 1 day, Q

_{w}

_{2,l2,g1}

^{max}= 100, Cap

_{w}

_{2,l2,g1}= 400, ED

_{w}

_{2,g1,t1}= 190, and VD

_{w}

_{2,g1,t1}= 1175 into Equations (23), (18), and (24)–(26).

_{h1,g1,t}+ z

_{1−}

_{γ}(VD

_{h1,g1,t})

^{0.5}) are 105.3, 29.7, and 105.3 product units per day that require two, one, and two open capacity levels, respectively (i.e., the right-hand sides are Cap

_{h}

_{1,l2,g1}= 180, Cap

_{h}

_{1,l1,g1}= 90, Cap

_{h}

_{1,l2,g1}= 180 product units, respectively). Note that hub h2 serving product g1 with Cap

_{h}

_{1,l1,g1}=70 can be employed to satisfy Constraint (12), but the total number of different located hubs will be increased by one and the objective will also be increased by W = 10

^{7}. The cost of USD 2500 to temporarily close a capacity level, the cost of USD 2000 to maintain a temporarily closed capacity level, and the cost of USD 10,000 to operate a capacity level for product g1 are incurred at hub h3 in period 2. The cost of USD 5000 to reopen a capacity level and the cost of USD 20,000 to operate two capacity levels for product g1 are incurred at hub h3 in period t3.

#### 5.2.4. Sensitivity Analysis

_{w,t}), demand standard deviation, and W are performed on the large problem instance. Figure 4 shows the sensitivity analysis results. The service levels for unfulfilled demand during the lead time at warehouses (1 − α), inventory capacity violation (1 − β), and daily throughput capacity violation (1 − γ) are assumed equal. Given the other parameters being the same, three levels of 1 − α = 1 − β = 1 − γ (0.65, 0.80, and 0.95), which correspond to 65%, 80%, and 95% service levels, respectively, are considered. From Figure 4a, given all else being equal, as the service level increases from 65% to 95%, the objective function value, the number of located warehouses, and the number of located hubs also increase. The greater-objective-function solution and the greater number of located facilities are traded off with the increase in service level (i.e., more constrained problem).

_{w,t}) are considered, given all other parameters being the same. From Figure 4b, given all else being equal, the objective function value decreases (i.e., achieving a better solution) as AllCap

_{w,t}increases (i.e., more relaxed constraints). The number of located warehouses is higher at a lesser value of AllCap

_{w,t}, as expected. Five levels of standard deviation factor (SDF), which is a multiplicative factor for the demand variance at each customer and product, are considered. From Figure 4c, as the SDF increases, the objective function value and the number of located hubs also increase. From Figure 4d, the greater the W value the higher the objective function value. As W increases, the number of located facilities decreases, as expected.

#### 5.2.5. Discussion

_{i}∀i ∈ F. The weight W

_{i}can be set to the monetary value of the spatial and physical impacts in terms of geologic, biologic, or geographic features (e.g., land use, forest type, and habitat impacts) [37,38], or the monetary value of the environmental impacts in terms of water, air, soils, ecosystems, and aesthetics [39] when facility i is located. As such, the objective function can be modified as:

## 6. Conclusions

## Author Contributions

## Funding

## Institutional Review Board Statement

## Informed Consent Statement

## Data Availability Statement

## Acknowledgments

## Conflicts of Interest

## References

- Silva, A.; Aloise, D.; Coelho, L.C.; Rocha, C. Heuristics for the dynamic facility location problem with modular capacities. Eur. J. Oper. Res.
**2021**, 290, 435–452. [Google Scholar] [CrossRef] - Crainic, T.G.; Sforza, A.; Sterle, C. Tabu search heuristic for a two-echelon location-routing problem, Research Report, interuniversity research centre on enterprise networks, logistics and transportation. In CIRRELT-2011-07; CIRRELT: Montréal, QC, Canada, 2011. [Google Scholar]
- Crainic, T.G.; Ricciardi, N.; Storchi, G. Advanced freight transportation systems for congested urban areas. Transp. Res. Part C Emerg. Technol.
**2004**, 12, 119–137. [Google Scholar] [CrossRef] - Crainic, T.G.; Ricciardi, N.; Storchi, G. Models for evaluating and planning city logistic transportation systems. Transp. Sci.
**2009**, 43, 432–454. [Google Scholar] [CrossRef] - Boccia, M.; Crainic, T.G.; Sforza, A.; Sterle, C. Location-Routing Models for Designing a Two-Echelon Freight Distribution System. In CIRRELT-2011-06 January Report; CIRRELT: Montréal, QC, Canada, 2011. [Google Scholar]
- Correia, I.; Captivo, M.E. A Lagrangean heuristic for a modular capacitated location problem. Ann. Oper. Res.
**2003**, 122, 141–161. [Google Scholar] [CrossRef] - Shulman, A. An algorithm for solving dynamic capacitated plant location problems with discrete expansion sizes. Oper. Res.
**1991**, 39, 423–436. [Google Scholar] [CrossRef] - Melo, M.T.; Nickel, S.; Saldanha da Gama, F. Facility location and supply chain management-a review. Eur. J. Oper. Res.
**2009**, 196, 401–412. [Google Scholar] [CrossRef] - Wesolowsky, G.O. Dynamic facility location. Manag. Sci.
**1973**, 19, 1241–1248. [Google Scholar] [CrossRef] - Dias, J.; Captivo, M.E.; Climaco, J. Efficient primal-dual heuristic for a dynamic location problem. Comput. Oper. Res.
**2007**, 34, 1800–1823. [Google Scholar] [CrossRef] - Jena, S.D.; Cordeau, J.-F.; Gendron, B. Dynamic facility location with generalized modular capacities. Transp. Sci.
**2015**, 49, 484–499. [Google Scholar] [CrossRef] - Jena, S.D.; Cordeau, J.-F.; Gendron, B. Modeling and solving a logging camp location problem. Ann. Oper. Res.
**2015**, 232, 151–177. [Google Scholar] [CrossRef] - Jena, S.D.; Cordeau, J.-F.; Gendron, B. Solving a dynamic facility location problem with partial closing and reopening. Comput. Oper. Res.
**2016**, 67, 143–154. [Google Scholar] [CrossRef] - Jena, S.D.; Cordeau, J.-F.; Gendron, B. Lagrangian heuristics for large-scale dynamic facility location with generalized modular capacities. INFORMS J. Comput.
**2017**, 29, 388–404. [Google Scholar] [CrossRef] - Miranda, P.A.; Garrido, R.A. A Simultaneous Inventory Control and Facility Location Model with Stochastic Capacity Constraints. Netw. Spat. Econ.
**2006**, 6, 39–53. [Google Scholar] [CrossRef] - Punyim, P.; Karoonsoontawong, A.; Unnikrishnan, A.; Xie, C. Tabu search heuristic for joint location-inventory problem with stochastic inventory capacity and practicality constraints. Netw. Spat. Econ.
**2018**, 18, 51–84. [Google Scholar] [CrossRef] - Zhang, Z.-H.; Unnikrishnan, A. A coordinated location-inventory problem in closed-loop supply chain. Transp. Res. Part B Methodol.
**2016**, 89, 127–148. [Google Scholar] [CrossRef] - Keskin, B.B.; Uster, H. Production/distribution system design with inventory considerations. Nav. Res. Logist.
**2012**, 59, 172–195. [Google Scholar] [CrossRef] - Teo, C.; Shu, J. Warehouse-retailer network design problem. Oper. Res.
**2004**, 52, 396–408. [Google Scholar] [CrossRef] - Daskin, M.S.; Coullard, C.R.; Shen, Z.-J.M. An inventory-location model: Formulation, solution algorithm and computational results. Ann. Oper. Res.
**2002**, 110, 83–106. [Google Scholar] [CrossRef] - Shen, Z.-J.M.; Coullard, C.; Daskin, M.S. A joint location-inventory model. Transp. Sci.
**2003**, 37, 40–55. [Google Scholar] [CrossRef] - Miranda, P.A.; Garrido, R.A. Incorporating inventory control decisions into a strategic distribution network design model with stochastic demand. Transp. Res. Part E
**2004**, 40, 183–207. [Google Scholar] [CrossRef] - Ozsen, L.; Coullard, C.R.; Daskin, M.S. Capacitated warehouse location model with risk pooling. Nav. Res. Logist.
**2008**, 55, 295–312. [Google Scholar] [CrossRef] - Vidyarthi, N.; Çelebi, E.; Elhedhli, S.; Jewkes, E. Integrated production-inventory-distribution system design with risk pooling: Model formulation and heuristic solution. Transp. Sci.
**2007**, 41, 392–408. [Google Scholar] [CrossRef] - Park, S.; Lee, T.-E.; Sung, C.S. A three-level supply chain network design model with risk pooling and lead times. Transp. Res. Part E
**2010**, 46, 563–581. [Google Scholar] [CrossRef] - Shahabi, M.; Unnikrishnan, A.; Jafari-Shirazi, E.; Boyles, S.D. A three level location-inventory problem with correlated demand. Transp. Res. Part B
**2014**, 69, 1–18. [Google Scholar] [CrossRef] - Battiti, R.; Tecchiolli, G. The Reactive Tabu Search. ORSA J. Comput.
**1994**, 6, 126–140. [Google Scholar] [CrossRef] - Glover, F. Tabu Search—Part I. ORSA J. Comput.
**1989**, 1, 190–206. [Google Scholar] [CrossRef] - Glover, F. Tabu Search—Part II. ORSA J. Comput.
**1990**, 2, 4–32. [Google Scholar] [CrossRef] - Hoefer, M. Experimental comparison of heuristic and approximation algorithms for uncapacitated facility location. In Lecture Notes in Computer Science, Proceedings of the Second International Workshop on Experimental and Efficient Algorithms (WEA 2003), Ascona, Switzerland, 26–28 May 2003; Jansen, K., Margraf, M., Mastrolilli, M., Rolim, J.D.P., Eds.; Springer: New York, NY, USA, 2003; Volume 2647, p. 2647. [Google Scholar]
- Al-Sultan, K.S.; Al-Fawzan, M.A. A tabu search approach to the uncapacitated facility location problem. Ann. Oper. Res.
**1999**, 86, 91–103. [Google Scholar] [CrossRef] - Sun, M. A Tabu Search Heuristic Procedure for the Capacitated Facility Location Problem. J. Heuristics
**2012**, 18, 91–118. [Google Scholar] [CrossRef] - Nagy, G.; Salhi, S. Nested heuristic methods for the location-routing problem. J. Oper. Res. Soc.
**1996**, 47, 1166–1174. [Google Scholar] [CrossRef] - Tuzun, D.; Burke, L.I. A two-phase tabu search approach to the location routing problem. Eur. J. Oper. Res.
**1999**, 116, 87–99. [Google Scholar] [CrossRef] - Karoonsoontawong, A.; Unnikrishnan, A. Inventory Routing Problem with Route Duration Limits and Stochastic Inventory Capacity Constraints: Tabu Search Heuristics. Transp. Res. Rec. J. Transp. Res. Board
**2013**, 2378, 43–53. [Google Scholar] [CrossRef] - Solomon, M.M. Algorithm for the vehicle routing and scheduling problem with time window constraints. Oper. Res.
**1987**, 35, 254–265. [Google Scholar] [CrossRef] - Terouhid, S.A.; Ries, R.; Fard, M.M. Towards Sustainable Facility Location—A Literature Review. J. Sustain. Dev.
**2012**, 5, 18–34. [Google Scholar] [CrossRef] - Marsh, M.T.; Schilling, D.A. Equity measurement in facility location analysis: A review and framework. Eur. J. Oper. Res.
**1994**, 74, 1–17. [Google Scholar] [CrossRef] - Briassoulis, H. Environmental criteria in industrial facility siting decisions: An analysis. Environ. Manag.
**1995**, 19, 297–311. [Google Scholar] [CrossRef]

**Figure 2.**Continuous-review inventory control policy for product g at warehouse w with l open capacity levels in period t.

**Table 1.**Summary of literature on joint location–inventory problem and dynamic facility location problem.

Research Work | Problem Features | Formulation | Solution Methods | |||||
---|---|---|---|---|---|---|---|---|

Echelon | Period | Product | Capacity Level | Relocate Capacity | Temporary Partial Capacity Closing and Reopening | |||

Joint Location–Inventory Problem | ||||||||

Daskin et al. (2002) [20] | Single | Single | Single | Single | N/A | N/A | INLP | Lagrangian relaxation (LR) |

Shen et al. (2003) [21] | ” | ” | ” | ” | ” | ” | INLP, IP | Column generation |

Miranda and Garrido (2004, 2006) [15,22] | ” | ” | ” | ” | ” | ” | MINLP | Heuristic based on LR and sub-gradient method |

Teo and Shu (2004) [19] | ” | ” | ” | ” | ” | ” | IP | Column generation |

Ozsen et al. (2008) [23] | ” | ” | ” | ” | ” | ” | INLP | LR |

Correia and Captivo (2003) [6] | Single | Single | Single | Multi | N/A | N/A | MIP | LR |

Zhang and Unnikrishnan (2016) [17] | ” | ” | ” | ” | ” | ” | MICQ | Outer approximation |

Punyim et al. (2018) [16] | ” | ” | ” | ” | ” | ” | MINLP | Tabu search |

Vidyarthi et al. (2007) [24] | Two | Single | Multi | Single | N/A | N/A | MINLP | LR |

Park et al. (2010) [25] | Two | Single | Single | Single | N/A | N/A | INLP | LR |

Keskin and Üster (2012) [18] | ” | ” | ” | ” | ” | ” | MINLP | Heuristic |

Shahabi et al. (2014) [26] | ” | ” | ” | ” | ” | ” | MICQ | Outer approximation |

Dynamic Facility Location Problem | ||||||||

Dias et al. (2007) [10] | Single | Multi | Single | Single | No | No | MIP | Primal-dual heuristic |

Shulman (1991) [7] | Single | Multi | Single | Multi | No | No | MIP | LR |

Jena et al. (2015) [11] | Single | Multi | Single | Multi | Yes | Yes | MIP | CPLEX solver |

Silva et al. (2021) [1] | ” | ” | ” | ” | ” | ” | MIP | Heuristics |

Jena et al. (2015) [12] | Single | Multi | Multi | Multi | Yes | Yes | MIP | CPLEX solver |

Jena et al. (2016; 2017) [13,14] | ” | ” | ” | ” | ” | ” | MIP | LR-based heuristic |

Joint Dynamic Location–Inventory Problem | ||||||||

Our work | Two | Multi | Multi | Multi | No | Yes | MINLP | Heuristic |

Period t − 1 | Period t | ncon | nof | nnf | nreo | nclo |
---|---|---|---|---|---|---|

Open and Existing Modular Capacity Levels (lp, np) | Open and Existing Modular Capacity Levels (l, n) | =n − np | =l | =n − l | = max{0, (l − lp) − (n − np)} | max{0, (lp − l) + n − np} |

(0, 2) | (1, 2) | 0 | 1 | 1 | 1 | 0 |

(0, 2) | (1, 3) | 1 | 1 | 2 | 0 | 0 |

(0, 2) | (1, 4) | 2 | 1 | 3 | 0 | 1 |

Tabu Search Procedure | Improvement Strategy | |
---|---|---|

1 | 2 | |

Swap_Demand_Node(v,g,t,s) | None | Insert_Demand_Node(v,g,t,s) |

Replace_Facility(v,g,s) | None | Insert_Demand_Node(v,g,t,s) for t = t_enter, …, |T|Swap_Demand_Node(v,g,t,s) for t = t_enter, …, |T| |

Replace_Facility(v,s) | None | Insert_Demand_Node(v,g,t,s) for g∈G, t = t_enter, …, |T|Swap_Demand_Node(v,g,t,s) for g∈G, t = t_enter, …, |T| |

Add_Facility(v,g,s) | None | Insert_Demand_Node(v,g,t,s) for t = t_enter, …, |T|Swap_Demand_Node(v,g,t,s) for t = t_enter, …, |T|Replace_Facility(v,g) |

Add_Facility(v,s) | None | Insert_Demand_Node(v,g,t,s) for g∈G, t = t_enter, …, |T|Swap_Demand_Node(v,g,t,s) for g∈G, t = t_enter, …, |T|Replace_Facility(v,s) for g∈G |

Period | g1 | g2 | g3 |
---|---|---|---|

1 | 1 | 1 | 1 |

2 | 1.1 | 1.2 | 0.9 |

3 | 1.21 | 1.44 | 0.81 |

4 | 1.331 | 1.296 | 0.972 |

5 | 1.4641 | 1.1664 | 1.1664 |

Warehouse | x | y | Cap_{w,l}_{1,g} | OF_{w,l}_{1,g} | Hub | x | y | Cap_{h,l}_{1,g} | OF_{h,l}_{1,g} |
---|---|---|---|---|---|---|---|---|---|

w1 | −11 | 63 | 250 | 400 | h1 | 1 | 7 | 90 | 200 |

w2 | 30 | −4 | 200 | 200 | h2 | 3 | 68 | 70 | 100 |

w3 | 13 | 93 | 250 | 400 | h3 | 91 | 27 | 90 | 200 |

w4 | 49 | 90 | 250 | 400 | h4 | 66 | 36 | 90 | 200 |

w5 | 102 | 23 | 200 | 200 | h5 | 42 | 82 | 70 | 100 |

w6 | 47 | −4 | 300 | 600 | h6 | 12 | 58 | 110 | 300 |

w7 | 31 | 92 | 250 | 400 | h7 | 74 | 51 | 90 | 200 |

w8 | −6 | 10 | 200 | 200 | h8 | 31 | 18 | 70 | 100 |

w9 | 100 | 65 | 250 | 400 | h9 | 33 | 83 | 90 | 200 |

w10 | 66 | −12 | 200 | 200 | h10 | 19 | 63 | 70 | 100 |

w11 | −3 | 26 | 300 | 600 | h11 | 18 | 31 | 110 | 300 |

w12 | −2 | 77 | 250 | 400 | h12 | 35 | 21 | 90 | 200 |

w13 | 99 | 71 | 200 | 200 | h13 | 29 | 63 | 70 | 100 |

w14 | 7 | −10 | 250 | 400 | h14 | 58 | 71 | 90 | 200 |

w15 | 87 | 88 | 250 | 400 | h15 | 89 | 47 | 90 | 200 |

w16 | 99 | 47 | 250 | 400 | h16 | 1 | 48 | 90 | 200 |

w17 | 70 | 97 | 200 | 200 | h17 | 59 | 56 | 70 | 100 |

w18 | −8 | 38 | 200 | 200 | h18 | 19 | 69 | 70 | 100 |

w19 | 90 | −6 | 200 | 200 | h19 | 65 | 16 | 70 | 100 |

w20 | 105 | 11 | 250 | 400 | h20 | 30 | 30 | 90 | 200 |

Period | g1 | g2 |
---|---|---|

1 | 1 | 1 |

2 | 0.75 | 1.5 |

3 | 1 | 2 |

**Table 7.**Best objective values, iteration that found best solution, and number of located facilities (MS_iterations = 100).

(a) Large Problem Instance | ||||||||||||

W | MS-CTSIH (Strategy 1) | MS-CTSIH (Strategy 2) | Modified MS-CTSIH | |||||||||

BestObj.(×10^{8}) | Iter. | No.ofFac. | TotalCPU(h) | BestObj.(×10^{8}) | Iter. | No.ofFac. | TotalCPU(h) | BestObj.(×10^{8}) | Iter. | No.ofFac. | TotalCPU(h) | |

10^{7} | 2.91525 | 0 | 18 | 1.12 | 2.95075 | 0 | 18 | 1.64 | 2.91418 | 0 | 18 | 2.94 |

10^{6} | 1.25349 | 31 | 24 | 0.99 | 1.25802 | 31 | 24 | 0.87 | 1.24970 | 31 | 23 | 2.15 |

10^{5} | 1.03294 | 77 | 27 | 1.06 | 1.03815 | 82 | 28 | 1.47 | 1.03294 | 77 | 27 | 2.06 |

0 | 1.00320 | 77 | 28 | 1.10 | 1.01086 | 77 | 29 | 1.51 | 1.00320 | 77 | 28 | 3.02 |

(b) Small Problem Instance | ||||||||||||

W | MS-CTSIH (Strategy 1) | MS-CTSIH (Strategy 2) | Modified MS-CTSIH | |||||||||

BestObj.(×10^{6}) | Iter. | No.ofFac. | TotalCPU(min) | BestObj.(×10^{6}) | Iter. | No.ofFac. | TotalCPU(min) | BestObj.(×10^{6}) | Iter. | No.ofFac. | TotalCPU(min) | |

10^{7} | 38.4486 | 15 | 3 | 0.121 | 38.4284 | 15 | 3 | 0.324 | 38.4284 | 15 | 3 | 0.527 |

10^{6} | 11.0912 | 0 | 4 | 0.139 | 11.0876 | 0 | 4 | 0.255 | 11.0876 | 0 | 4 | 0.463 |

10^{5} | 7.49123 | 0 | 4 | 0.113 | 7.48756 | 0 | 4 | 0.250 | 7.48756 | 0 | 4 | 0.449 |

0 | 7.09123 | 0 | 4 | 0.113 | 7.08756 | 0 | 4 | 0.253 | 7.08756 | 0 | 4 | 0.440 |

(a) First-Echelon Solution | ||||||||||||||||

Period | t1 | t2 | t3 | |||||||||||||

Product | g1 | g2 | g1 | g2 | g1 | g2 | ||||||||||

located warehouse | w2 | w2 | w2 | w2 | w2 | w2 | ||||||||||

open inventory capacity, Cap_{wlg} | 400 | 200 | 400 | 400 | 400 | 400 | ||||||||||

existing inventory capacity | 400 | 200 | 400 | 400 | 400 | 400 | ||||||||||

served mean demand, ED_{wgt} | 190 | 108 | 142.5 | 162 | 190 | 216 | ||||||||||

served demand variance, VD_{wgt} | 1175 | 431.5 | 660.94 | 970.88 | 1175 | 1726 | ||||||||||

assigned hubs | h1, h3 | h1 | h1, h3 | h1, h3 | h1, h3 | h1, h3 | ||||||||||

construction cost | 400,000 | 200,000 | 0 | 200,000 | 0 | 0 | ||||||||||

operating fixed cost | 40,000 | 20,000 | 40,000 | 40,000 | 40,000 | 40,000 | ||||||||||

non-operated fixed cost | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||

reopen cost | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||

temporary close cost | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||

transport cost (plants–warehouses), rc_{wgt} | 69,350 | 39,420 | 52,012.5 | 59,130 | 69,350 | 78,840 | ||||||||||

transport cost (warehouses–hubs) | 310,677 | 122,266 | 181,804 | 236,650 | 310,677 | 381,074 | ||||||||||

holding cost, hc_{wgt} | 42,772.7 | 23,985.7 | 36,642 | 40,541.1 | 42,772.7 | 47,971.4 | ||||||||||

ordering cost, oc_{wgt} | 34,675 | 39,420 | 26,006.2 | 29,565 | 34,675 | 39,420 | ||||||||||

Continuous-Review Inventory Control Policy | ||||||||||||||||

order quantity, Q_{wgt} | 100 | 50 | 100 | 100 | 100 | 100 | ||||||||||

reorder point, RP_{wgt} | 257.19 | 148.71 | 192.89 | 223.07 | 257.19 | 297.43 | ||||||||||

safety stock, SS_{wgt} | 67.19 | 40.71 | 50.39 | 61.07 | 67.19 | 81.43 | ||||||||||

(b) Second-Echelon Solution | ||||||||||||||||

Period | t1 | t2 | t3 | |||||||||||||

Product | g1 | g2 | g1 | g2 | g1 | g2 | ||||||||||

located hub | h1 | h3 | h1 | h1 | h3 | h1 | h3 | h1 | h3 | h1 | h3 | |||||

open max served daily demand, Cap_{hlg} | 180 | 180 | 180 | 180 | 90 | 180 | 90 | 180 | 180 | 180 | 180 | |||||

existing max served daily demand | 180 | 180 | 180 | 180 | 180 | 180 | 90 | 180 | 180 | 180 | 180 | |||||

served mean demand, ED_{hgt} | 120 | 70 | 108 | 127.5 | 15 | 123 | 39 | 120 | 70 | 116 | 100 | |||||

served demand variance, VD_{hgt} | 850 | 325 | 431.5 | 604.69 | 56.25 | 814.5 | 156.38 | 850 | 325 | 1062 | 664 | |||||

assigned customers | 4, 2, 8, 9, 7 | 6, 3, 1, 5 | 1–9 | 2–9 | 1 | 5, 4, 9, 7, 8, 2 | 1, 3, 6 | 4, 2, 8, 9, 7 | 6, 3, 1, 5 | 5, 8, 9, 2 | 3, 1, 4, 6, 7 | |||||

construction cost USD 1K | 200 | 200 | 200 | 0 | 0 | 0 | 100 | 0 | 0 | 0 | 100 | |||||

operating fixed USD 1K | 20 | 20 | 20 | 20 | 10 | 20 | 10 | 20 | 20 | 20 | 20 | |||||

non-operated fixed cost USD 1K | 0 | 0 | 0 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | |||||

reopen cost (USD 1K) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 5 | 0 | 0 | |||||

temporary close cost (USD 1K) | 0 | 0 | 0 | 0 | 2.5 | 0 | 0 | 0 | 0 | 0 | 0 | |||||

transport cost (hubs– customers) (USD 1K) | 431.0 | 341.6 | 415.1 | 479.9 | 72.2 | 452.1 | 189.9 | 431.0 | 341.6 | 407.9 | 486.8 |

Period | Total Mean Demand (Product Units/Day) | Total Demand Variance (Product Units/Day) ^{2} | First-Echelon Facility | Second-Echelon Facility | |||||
---|---|---|---|---|---|---|---|---|---|

w2 | h1 | h3 | |||||||

g1 | g2 | all g | g1 | g2 | all g | all g | all g | all g | |

t1 | 190 | 108 | 298.0 | 1175 | 431.5 | 1606.5 | 600 | 360 | 180 |

t2 | 142.5 | 162 | 304.5 | 660.9 | 970.9 | 1631.8 | 800 | 360 | 180 |

t3 | 190 | 216 | 406.0 | 1175 | 1726 | 2901.00 | 800 | 360 | 360 |

Publisher’s Note: MDPI stays neutral with regard to jurisdictional claims in published maps and institutional affiliations. |

© 2022 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (https://creativecommons.org/licenses/by/4.0/).

## Share and Cite

**MDPI and ACS Style**

Punyim, P.; Karoonsoontawong, A.; Unnikrishnan, A.; Ratanavaraha, V.
A Heuristic for the Two-Echelon Multi-Period Multi-Product Location–Inventory Problem with Partial Facility Closing and Reopening. *Sustainability* **2022**, *14*, 10569.
https://doi.org/10.3390/su141710569

**AMA Style**

Punyim P, Karoonsoontawong A, Unnikrishnan A, Ratanavaraha V.
A Heuristic for the Two-Echelon Multi-Period Multi-Product Location–Inventory Problem with Partial Facility Closing and Reopening. *Sustainability*. 2022; 14(17):10569.
https://doi.org/10.3390/su141710569

**Chicago/Turabian Style**

Punyim, Puntipa, Ampol Karoonsoontawong, Avinash Unnikrishnan, and Vatanavongs Ratanavaraha.
2022. "A Heuristic for the Two-Echelon Multi-Period Multi-Product Location–Inventory Problem with Partial Facility Closing and Reopening" *Sustainability* 14, no. 17: 10569.
https://doi.org/10.3390/su141710569