# American Institute of Mathematical Sciences

March  2022, 18(2): 897-932. doi: 10.3934/jimo.2021002

## A model and two heuristic methods for The Multi-Product Inventory-Location-Routing Problem with heterogeneous fleet

 Department of Industrial Engineering, Gazi University, Ankara, Turkey

* Corresponding author: omer.arslan1@gazi.edu.tr

Received  January 2020 Revised  September 2020 Published  March 2022 Early access  December 2020

The Multi-Product Inventory-Location-Routing Problem with heterogeneous fleet considers a supply chain, which comprises multiple producers, potential distribution centers (DCs) with opening capacity levels and geographically scattered retailers each of which has deterministic demand over a discrete planning horizon. The goal is determining a set of DCs with their capacity levels to open, assigning retailers to the opened DCs, finding product quantities to be ordered by and distributed from opened DCs and determining the fleet and routes to satisfy the demands of retailers with minimum cost. A mixed-integer linear programming model is proposed to describe the problem, which is strengthened by two valid inequalities. Since the commercial solver can only solve the very small-sized instances within a reasonable time, two heuristic methods are developed. Results show that the proposed valid inequalities are effective and both methods provide important savings in acceptable run times compared to the commercial solver.

Citation: Ömer Arslan, Selçuk Kürşat İşleyen. A model and two heuristic methods for The Multi-Product Inventory-Location-Routing Problem with heterogeneous fleet. Journal of Industrial and Management Optimization, 2022, 18 (2) : 897-932. doi: 10.3934/jimo.2021002
##### References:
 [1] D. Ambrosino and M. G. Scutella, Distribution network design: New problems and related models, European Journal of Operational Research, 165 (2005), 610-624.  doi: 10.1016/j.ejor.2003.04.009. [2] D. Blanchard, Supply Chain Management Best Practices, John Wiley & Sons, 2010. [3] T. M. Cioppa and T. W. Lucas, Efficient nearly orthogonal and space-filling latin hypercubes, Technometrics, 49 (2007), 45-55.  doi: 10.1198/004017006000000453. [4] A. Ghorbani and M. R. A. Jokar, A hybrid imperialist competitive-simulated annealing algorithm for a multisource multi-product location-routing-inventory problem, Computers & Industrial Engineering, 101 (2016), 116-127.  doi: 10.1016/j.cie.2016.08.027. [5] F. Glover and M. Laguna, Tabu search, In Handbook of Combinatorial Optimization, Vol. 3, Kluwer Acad. Publ., Boston, MA, 1998,621–757. [6] M. G. Granada and C. W. Silva, Inventory Location Routing problem: A column Generation Approach, PhD thesis, Uniandes, 2011. [7] W. J. Guerrero, C. Prodhon, N. Velasco and C. A. Amaya, Hybrid heuristic for the inventory location-routing problem with deterministic demand, International Journal of Production Economics, 146 (2013), 359-370.  doi: 10.1016/j.ijpe.2013.07.025. [8] W. J. Guerrero, C. Prodhon, N. Velasco and C.-A. Amaya, A relax-and-price heuristic for the inventory-location-routing problem, International Transactions in Operational Research, 22 (2015), 129-148.  doi: 10.1111/itor.12091. [9] A. Hiassat, A. Diabat and I. Rahwan, A genetic algorithm approach for location-inventory-routing problem with perishable products, Journal of Manufacturing Systems, 42 (2017), 93-103. [10] A. A. Javid and N. Azad, Incorporating location, routing and inventory decisions in supply chain network design, Transportation Research Part E: Logistics and Transportation Review, 46 (2010), 582-597. [11] S. C. Liu and C. C. Lin, A heuristic method for the combined location routing and inventory problem, The International Journal of Advanced Manufacturing Technology, 26 (2005), 372-381.  doi: 10.1007/s00170-003-2005-3. [12] S. C. Liu and S. B. Lee, A two-phase heuristic method for the multi-depot location routing problem taking inventory control decisions into consideration, The International Journal of Advanced Manufacturing Technology, 22 (2003), 941-950.  doi: 10.1007/s00170-003-1639-5. [13] H. Ma and R. Davidrajuh, An iterative approach for distribution chain design in agile virtual environment, Industrial Management & Data Systems, 2005. [14] N. Nekooghadirli, R. Tavakkoli-Moghaddam, V. R. Ghezavati and S. Javanmard, Solving a new bi-objective location-routing-inventory problem in a distribution network by meta-heuristics, Computers & Industrial Engineering, 76 (2014), 204-221.  doi: 10.1016/j.cie.2014.08.004. [15] U. Pasha, A. Hoff and L. M. Hvattum, Simple heuristics for the multi-period fleet size and mix vehicle routing problem, INFOR: Information Systems and Operational Research, 54 (2016), 97-120.  doi: 10.1080/03155986.2016.1149314. [16] S. R. Sajjadi, M. Hamidi and S. H. Cheraghi, Multi-product capacitated location routing inventory problem, International Journal of Modern Engineering, 13 (2013). [17] N. I. Saragih, N. Bahagia, I. Syabri and et al, A heuristic method for location-inventory-routing problem in a three-echelon supply chain system, Computers & Industrial Engineering, 127 (2019), 875-886. [18] Z.-J. M. Shen and L. Qi, Incorporating inventory and routing costs in strategic location models, European journal of operational research, 179 (2007), 372-389.  doi: 10.1016/j.ejor.2006.03.032. [19] Y. Zhang, M. Qi, L. Miao and E. Liu, Hybrid metaheuristic solutions to inventory location routing problem, Transportation Research Part E: Logistics and Transportation Review, 70 (2014), 305-323.

show all references

##### References:
 [1] D. Ambrosino and M. G. Scutella, Distribution network design: New problems and related models, European Journal of Operational Research, 165 (2005), 610-624.  doi: 10.1016/j.ejor.2003.04.009. [2] D. Blanchard, Supply Chain Management Best Practices, John Wiley & Sons, 2010. [3] T. M. Cioppa and T. W. Lucas, Efficient nearly orthogonal and space-filling latin hypercubes, Technometrics, 49 (2007), 45-55.  doi: 10.1198/004017006000000453. [4] A. Ghorbani and M. R. A. Jokar, A hybrid imperialist competitive-simulated annealing algorithm for a multisource multi-product location-routing-inventory problem, Computers & Industrial Engineering, 101 (2016), 116-127.  doi: 10.1016/j.cie.2016.08.027. [5] F. Glover and M. Laguna, Tabu search, In Handbook of Combinatorial Optimization, Vol. 3, Kluwer Acad. Publ., Boston, MA, 1998,621–757. [6] M. G. Granada and C. W. Silva, Inventory Location Routing problem: A column Generation Approach, PhD thesis, Uniandes, 2011. [7] W. J. Guerrero, C. Prodhon, N. Velasco and C. A. Amaya, Hybrid heuristic for the inventory location-routing problem with deterministic demand, International Journal of Production Economics, 146 (2013), 359-370.  doi: 10.1016/j.ijpe.2013.07.025. [8] W. J. Guerrero, C. Prodhon, N. Velasco and C.-A. Amaya, A relax-and-price heuristic for the inventory-location-routing problem, International Transactions in Operational Research, 22 (2015), 129-148.  doi: 10.1111/itor.12091. [9] A. Hiassat, A. Diabat and I. Rahwan, A genetic algorithm approach for location-inventory-routing problem with perishable products, Journal of Manufacturing Systems, 42 (2017), 93-103. [10] A. A. Javid and N. Azad, Incorporating location, routing and inventory decisions in supply chain network design, Transportation Research Part E: Logistics and Transportation Review, 46 (2010), 582-597. [11] S. C. Liu and C. C. Lin, A heuristic method for the combined location routing and inventory problem, The International Journal of Advanced Manufacturing Technology, 26 (2005), 372-381.  doi: 10.1007/s00170-003-2005-3. [12] S. C. Liu and S. B. Lee, A two-phase heuristic method for the multi-depot location routing problem taking inventory control decisions into consideration, The International Journal of Advanced Manufacturing Technology, 22 (2003), 941-950.  doi: 10.1007/s00170-003-1639-5. [13] H. Ma and R. Davidrajuh, An iterative approach for distribution chain design in agile virtual environment, Industrial Management & Data Systems, 2005. [14] N. Nekooghadirli, R. Tavakkoli-Moghaddam, V. R. Ghezavati and S. Javanmard, Solving a new bi-objective location-routing-inventory problem in a distribution network by meta-heuristics, Computers & Industrial Engineering, 76 (2014), 204-221.  doi: 10.1016/j.cie.2014.08.004. [15] U. Pasha, A. Hoff and L. M. Hvattum, Simple heuristics for the multi-period fleet size and mix vehicle routing problem, INFOR: Information Systems and Operational Research, 54 (2016), 97-120.  doi: 10.1080/03155986.2016.1149314. [16] S. R. Sajjadi, M. Hamidi and S. H. Cheraghi, Multi-product capacitated location routing inventory problem, International Journal of Modern Engineering, 13 (2013). [17] N. I. Saragih, N. Bahagia, I. Syabri and et al, A heuristic method for location-inventory-routing problem in a three-echelon supply chain system, Computers & Industrial Engineering, 127 (2019), 875-886. [18] Z.-J. M. Shen and L. Qi, Incorporating inventory and routing costs in strategic location models, European journal of operational research, 179 (2007), 372-389.  doi: 10.1016/j.ejor.2006.03.032. [19] Y. Zhang, M. Qi, L. Miao and E. Liu, Hybrid metaheuristic solutions to inventory location routing problem, Transportation Research Part E: Logistics and Transportation Review, 70 (2014), 305-323.
Representation of the problem
Representation of the shift delivery move 2
Effect of the SEH sub-procedures used in the findRoutes procedure
Analysis of intensifications' phases and diversifications
Main literature review summary on ILRP
 Study # of Pe. # of Pr. Demand Fleet Solution method Liu and Lee (2003) Single Single Stochastic Homo. Sequential heuristic Liu and Lin (2005) Single Single Stochastic Homo. Hybrid heuristic Ambrosino and Scutella (2005) Single Single Deterministic Homo. Com. solver Ma and Davidrajuh (2005) Single Single Stochastic Homo. Sequential heuristic Shen and Qi (2007) Single Single Stochastic Homo. Branch & Bound Javid and Azad (2010) Single Single Stochastic Homo. Tabu search & Sim.Annealing Granada and Silva (2012) Multiple Single Deterministic Homo. Column generation Sajjadi et al. (2013) Single Multiple Deterministic Homo. Sequential heuristic Guerrero et al. (2013) Multiple Single Deterministic Homo. Hybrid heuristic Nekooghadirli et al. (2014) Multiple Multiple Stochastic Hete. Multi-objective meta-heuristic methods Zhang et al. (2014) Multiple Single Deterministic Homo. Hybrid heuristic Guerrero et al. (2015) Multiple Single Deterministic Homo. Relax & Price Hiassat et al. (2017) Multiple Single Deterministic Homo. Genetic algorithm Saragih et al. (2019) Single Single Stochastic Homo. Sim.Annealing Our study Multiple Multiple Deterministic Hete. Sequential heuristic Hybrid heuristic
 Study # of Pe. # of Pr. Demand Fleet Solution method Liu and Lee (2003) Single Single Stochastic Homo. Sequential heuristic Liu and Lin (2005) Single Single Stochastic Homo. Hybrid heuristic Ambrosino and Scutella (2005) Single Single Deterministic Homo. Com. solver Ma and Davidrajuh (2005) Single Single Stochastic Homo. Sequential heuristic Shen and Qi (2007) Single Single Stochastic Homo. Branch & Bound Javid and Azad (2010) Single Single Stochastic Homo. Tabu search & Sim.Annealing Granada and Silva (2012) Multiple Single Deterministic Homo. Column generation Sajjadi et al. (2013) Single Multiple Deterministic Homo. Sequential heuristic Guerrero et al. (2013) Multiple Single Deterministic Homo. Hybrid heuristic Nekooghadirli et al. (2014) Multiple Multiple Stochastic Hete. Multi-objective meta-heuristic methods Zhang et al. (2014) Multiple Single Deterministic Homo. Hybrid heuristic Guerrero et al. (2015) Multiple Single Deterministic Homo. Relax & Price Hiassat et al. (2017) Multiple Single Deterministic Homo. Genetic algorithm Saragih et al. (2019) Single Single Stochastic Homo. Sim.Annealing Our study Multiple Multiple Deterministic Hete. Sequential heuristic Hybrid heuristic
Pseudocode of the sequential heuristic method
 Procedure: solveSeq 1: S${}_{00}$ ← findSeqSolWithoutRoutes() 2: for repNum = 1 to numOfReps do // for all replications 3:    S${}_{0}$ = S${}_{00}$ 4:    S${}^{*}$ ← findAllRoutes(S${}_{0}$) 5:    Save the S${}^{*}$ as the best solution found for the replication numbered repNum
 Procedure: solveSeq 1: S${}_{00}$ ← findSeqSolWithoutRoutes() 2: for repNum = 1 to numOfReps do // for all replications 3:    S${}_{0}$ = S${}_{00}$ 4:    S${}^{*}$ ← findAllRoutes(S${}_{0}$) 5:    Save the S${}^{*}$ as the best solution found for the replication numbered repNum
Pseudocode of the procedure for finding sequential solution without routes
 Procedure: findSeqSolWithoutRoutes 1:  S${}_{00}$ ← findLocAllocDecisions() 2:  S${}_{00}$ ← findInvManDecUsingInvManModel(S${}_{00}$) 3:  S${}_{00 }$ ← checkAndUpdateOpenedDCsCapLevels(S${}_{00}$) 4:  return S${}_{00}$
 Procedure: findSeqSolWithoutRoutes 1:  S${}_{00}$ ← findLocAllocDecisions() 2:  S${}_{00}$ ← findInvManDecUsingInvManModel(S${}_{00}$) 3:  S${}_{00 }$ ← checkAndUpdateOpenedDCsCapLevels(S${}_{00}$) 4:  return S${}_{00}$
Pseudocode of the procedure for finding vehicle routes
 Procedure: findAllRoutes(sol) 1: for i = 1 to sol.getNumOfOpenDCs() do    // For all open DCs in the solution 2:    Assign the next open DC to openDC${}_{i}$ 3:    for t = 1 to numOfPeriods do    // For all periods 4:       If there is a distribution (dist.) to openDC${}_{i}$ at period t 5:          Find the routes for openDC${}_{i}$ at period t using findRoutes procedure 6:    Add the fleet of openDC${}_{i}$ to the new created triedFleetsForOpenDCI list 7:    for strInd = 1 to numOfStrategies do    //For all of the fleet finding strategies 8:       Find a new fleet (newFleetForOpenDC${}_{i}$) for openDC${}_{i}$ with the strategy in turn 9:       If newFleetForOpenDC${}_{i}$ is not included in the triedFleetsForOpenDCIlist 10:          Add newFleetForOpenDC${}_{i}$ to the triedFleetsForOpenDCI list 11:          for t = 1 to numOfPeriods do    // For all periods 12:             Ifthere is a distribution to openDC${}_{i}$ at period t 13:                If the fleet of openDC${}_{i}$ at period t is not a subset of newFleetForOpenDC${}_{i}$ 14:                   Find and assign routes to openDC${}_{i}$ for period t with newFleetForOpenDC${}_{i}$ 15:         If all of the new routes of openDC${}_{i}$ is feasible 16:             Ifdist. plus fixed cost of new routesfor openDC${}_{i}$ is less than the original cost 17:                Assign the new routes to openDC${}_{i}$
 Procedure: findAllRoutes(sol) 1: for i = 1 to sol.getNumOfOpenDCs() do    // For all open DCs in the solution 2:    Assign the next open DC to openDC${}_{i}$ 3:    for t = 1 to numOfPeriods do    // For all periods 4:       If there is a distribution (dist.) to openDC${}_{i}$ at period t 5:          Find the routes for openDC${}_{i}$ at period t using findRoutes procedure 6:    Add the fleet of openDC${}_{i}$ to the new created triedFleetsForOpenDCI list 7:    for strInd = 1 to numOfStrategies do    //For all of the fleet finding strategies 8:       Find a new fleet (newFleetForOpenDC${}_{i}$) for openDC${}_{i}$ with the strategy in turn 9:       If newFleetForOpenDC${}_{i}$ is not included in the triedFleetsForOpenDCIlist 10:          Add newFleetForOpenDC${}_{i}$ to the triedFleetsForOpenDCI list 11:          for t = 1 to numOfPeriods do    // For all periods 12:             Ifthere is a distribution to openDC${}_{i}$ at period t 13:                If the fleet of openDC${}_{i}$ at period t is not a subset of newFleetForOpenDC${}_{i}$ 14:                   Find and assign routes to openDC${}_{i}$ for period t with newFleetForOpenDC${}_{i}$ 15:         If all of the new routes of openDC${}_{i}$ is feasible 16:             Ifdist. plus fixed cost of new routesfor openDC${}_{i}$ is less than the original cost 17:                Assign the new routes to openDC${}_{i}$
Pseudocode of the procedure that finds the routes for a specific DC at a given period
 Procedure: findRoutes $(DC \ openDC_i, short \ t, short[] \ fixedFleet)$ 1: $S_0$ ← findInitialRoutes(open$DC_i$, t, fixedFleet) 2: If (isFeasible($S_0$)) // Initialize the best solution if necessary 3:    $S^*=S_0$ 4: globalCounter = 6000; sEHCallFreq = 30; // Initialize parameters 5: beta = PENALTYFACTOR; sEHCallCounter = 0; 6: while(globalCounter > 0) do // Main loop of tabu search 7:    globalCounter = globalCounter – 1; 8:    updateSEHCallFreqAndTabuTenure(globalCounter); 9:    moveList ← findMoves($S_0$)      // Find the available moves 10:    bestMove ← findNonTabuBestMove(moveList); 11:    $S_0$ ← applyMove ($S_0$, bestMove); 12:    updateTabuList(); // Update the tabu list 13:    If(isFeasible($S_0$) && ($S_0$.getCost() < $S^*$.getCost())) 14:      $S^*=S_0$ 15:    If(sEHCallCounter >= sEHCallFreq) 16:      sEHCallCounter = 0 17:      If(fixedFleet == null) // Apply the appropriate SEH procedure to $S_{0}$ 18:        $S_{0}$ ← SEHWithoutFixedFleet( $S_0$, t) 19:    Else 20:        $S_0$ ← SEHWithFixedFleet($S_0$, t, fixedFleet) 21:   If(isFeasible($S_0$) && ($S_0$.getCost() < $S^*$.getCost())) 22:    $S^*=S_0$ 23:    sEHCallCounter = sEHCallCounter + 1 24:    If(isFeasible($S_{0}$)) // Update the beta parameter appropriately 25:  beta = beta * (1 - ALFA) 26:    Else 27:  beta = beta * (1 + ALFA) 28: return $S^*$
 Procedure: findRoutes $(DC \ openDC_i, short \ t, short[] \ fixedFleet)$ 1: $S_0$ ← findInitialRoutes(open$DC_i$, t, fixedFleet) 2: If (isFeasible($S_0$)) // Initialize the best solution if necessary 3:    $S^*=S_0$ 4: globalCounter = 6000; sEHCallFreq = 30; // Initialize parameters 5: beta = PENALTYFACTOR; sEHCallCounter = 0; 6: while(globalCounter > 0) do // Main loop of tabu search 7:    globalCounter = globalCounter – 1; 8:    updateSEHCallFreqAndTabuTenure(globalCounter); 9:    moveList ← findMoves($S_0$)      // Find the available moves 10:    bestMove ← findNonTabuBestMove(moveList); 11:    $S_0$ ← applyMove ($S_0$, bestMove); 12:    updateTabuList(); // Update the tabu list 13:    If(isFeasible($S_0$) && ($S_0$.getCost() < $S^*$.getCost())) 14:      $S^*=S_0$ 15:    If(sEHCallCounter >= sEHCallFreq) 16:      sEHCallCounter = 0 17:      If(fixedFleet == null) // Apply the appropriate SEH procedure to $S_{0}$ 18:        $S_{0}$ ← SEHWithoutFixedFleet( $S_0$, t) 19:    Else 20:        $S_0$ ← SEHWithFixedFleet($S_0$, t, fixedFleet) 21:   If(isFeasible($S_0$) && ($S_0$.getCost() < $S^*$.getCost())) 22:    $S^*=S_0$ 23:    sEHCallCounter = sEHCallCounter + 1 24:    If(isFeasible($S_{0}$)) // Update the beta parameter appropriately 25:  beta = beta * (1 - ALFA) 26:    Else 27:  beta = beta * (1 + ALFA) 28: return $S^*$
Pseudocode of the hybrid heuristic
 Procedure: solveHybrid 1: S${}_{00}$ ← findHybridSolWithoutRoutes()              // Find the base hybrid solution 2: for repNum = 1 to numOfReps do        // For all replications 3:    Empty the triedLocAllocConfigsList 4:    S${}_{0}$ = S${}_{00}$ // Assign the base solution to initial solution 5:    Add the location allocation decision of S${}_{0}$ to the triedLocAllocConfigsList 6:    S${}_{0}$ ← findAllRoutes(S${}_{0}$) // Find all of the routes for initial solution 7:    S${}^{*}$ ← intensify(S${}_{0}$, triedLocAllocConfigsList) 8:    S${}_{new}$ = S${}^{*}$ 9:    diverCounter = 0 // Initialize diversification counter 10:    while (diverCounter < totalNumOfDiversifications) do 11:    S${}_{new}$ ← diversify(S${}_{new}$, triedLocAllocConfigsList) 12:    S${}_{new}$ ← intensify(S${}_{new}$, triedLocAllocConfigsList) 13:    If (S${}_{new}$.getCost() < S${}^{*}$.getCost()) 14:    S${}^{*}$ = S${}_{new}$ 15:    diverCounter = diverCounter + 1 16:    Save S${}^{*\ }$ as the best solution found for the replication numbered repNum
 Procedure: solveHybrid 1: S${}_{00}$ ← findHybridSolWithoutRoutes()              // Find the base hybrid solution 2: for repNum = 1 to numOfReps do        // For all replications 3:    Empty the triedLocAllocConfigsList 4:    S${}_{0}$ = S${}_{00}$ // Assign the base solution to initial solution 5:    Add the location allocation decision of S${}_{0}$ to the triedLocAllocConfigsList 6:    S${}_{0}$ ← findAllRoutes(S${}_{0}$) // Find all of the routes for initial solution 7:    S${}^{*}$ ← intensify(S${}_{0}$, triedLocAllocConfigsList) 8:    S${}_{new}$ = S${}^{*}$ 9:    diverCounter = 0 // Initialize diversification counter 10:    while (diverCounter < totalNumOfDiversifications) do 11:    S${}_{new}$ ← diversify(S${}_{new}$, triedLocAllocConfigsList) 12:    S${}_{new}$ ← intensify(S${}_{new}$, triedLocAllocConfigsList) 13:    If (S${}_{new}$.getCost() < S${}^{*}$.getCost()) 14:    S${}^{*}$ = S${}_{new}$ 15:    diverCounter = diverCounter + 1 16:    Save S${}^{*\ }$ as the best solution found for the replication numbered repNum
Pseudocode of the intensification process
 Procedure: intensify 1: S${}^{*}$ = S${}_{m}$             // Assign the input solution to the best solution 2: temp = INI_TEMP;   // Initialize the temperature used in the simulated annealing 3: solNotImpAtConsTempCounter = 0 4: Initialize the fields used for tabu search 5: changeAllDCsCapLevMove = false; 6: optAllDCsOrdersMove = false;   // By default make optAllDCSOrdersMove passive 7: while (temp > FRE_TEMP) do   // Main loop of the simulated annealing 8:   preIntPhase = curIntPhase 9:   curIntPhase ← findIntPhase(temp) 10:   setIntParams(curIntPhase, S${}_{m}$.getNumOfOpenDCs) 11:   If (preIntPhase!= curIntPhase)   //If the int. phase has been changed 12:     If(S${}_{m}$.getOpenedDCsMinFilDegree <= DC_FIL_DEGREE_MIN_LEVEL|| S${}_{m}$.getOpenedDCsMaxFilDegree >= DC_FIL_DEGREE_MAX_LEVEL) 13:      changeAllDCsCapLevMove = true 14:     If (curIntPhase % 2 == 0)   // If the intensification phase number is even 15:       optAllDCsOrdersMove = true   // Make optAllDCsOrdersMove active 16:   solImpAtThisTemp = false   // By default make solImpAtThisTemp false 17:   numOfIterAtThisTempCounter = NUM_OF_ITERS_AT_ALL_TEMPS 18:   while (numOfIterAtThisTempCounter > 0) do 19:     Find the move to be applied randomly and apply it to S${}_{m}$ 20:     deltaCost ← calcDeltaCost(S${}_{new}$, S${}_{m}$ ) 21:     If (deltaCost < 0 || Math.exp(-1.0f * deltaCost / temp) > probRegarCost) 22:       S${}_{m}$ = S${}_{new}$ 23:       If (S${}_{m}$.getCost() < S${}^{*}$.getCost())   // Update the best solution if necessary 24:         S${}^{*}$ = S${}_{m}$ 25:         solImpAtThisTemp = true       // Make solImpAtThisTemp true 26:     numOfIterAtThisTempCounter = numOfIterAtThisTempCounter - 1 27:     Update the fields used for tabu search 28:   If (solImpAtThisTemp == true) 29:     solNotImpAtConsTempsCounter = 0 30:   Else 31:     solNotImpAtConsTempsCounter = solNotImpAtConsTempsCounter + 1 32:   If (solNotImpAtConsTempsCounter == NUM_OF_CONS_TEMPS_SOL_NOT_IMP) 33:     solNotImpAtConsTempsCounter = 0 34:     If(getRandomFloat() <= ASSIGN_THE_BEST_SOL_RATIO) 35:       S${}_{m}$ = S${}^{*}$  // Assign the best solution to the current solution 36:     Else 37:       S${}_{m}$ ← updateOrdersWithOrderingModel(S${}_{m}$, DC_CAP_MULTIPLIER) 38:       If (S${}_{m}$.getCost()
 Procedure: intensify 1: S${}^{*}$ = S${}_{m}$             // Assign the input solution to the best solution 2: temp = INI_TEMP;   // Initialize the temperature used in the simulated annealing 3: solNotImpAtConsTempCounter = 0 4: Initialize the fields used for tabu search 5: changeAllDCsCapLevMove = false; 6: optAllDCsOrdersMove = false;   // By default make optAllDCSOrdersMove passive 7: while (temp > FRE_TEMP) do   // Main loop of the simulated annealing 8:   preIntPhase = curIntPhase 9:   curIntPhase ← findIntPhase(temp) 10:   setIntParams(curIntPhase, S${}_{m}$.getNumOfOpenDCs) 11:   If (preIntPhase!= curIntPhase)   //If the int. phase has been changed 12:     If(S${}_{m}$.getOpenedDCsMinFilDegree <= DC_FIL_DEGREE_MIN_LEVEL|| S${}_{m}$.getOpenedDCsMaxFilDegree >= DC_FIL_DEGREE_MAX_LEVEL) 13:      changeAllDCsCapLevMove = true 14:     If (curIntPhase % 2 == 0)   // If the intensification phase number is even 15:       optAllDCsOrdersMove = true   // Make optAllDCsOrdersMove active 16:   solImpAtThisTemp = false   // By default make solImpAtThisTemp false 17:   numOfIterAtThisTempCounter = NUM_OF_ITERS_AT_ALL_TEMPS 18:   while (numOfIterAtThisTempCounter > 0) do 19:     Find the move to be applied randomly and apply it to S${}_{m}$ 20:     deltaCost ← calcDeltaCost(S${}_{new}$, S${}_{m}$ ) 21:     If (deltaCost < 0 || Math.exp(-1.0f * deltaCost / temp) > probRegarCost) 22:       S${}_{m}$ = S${}_{new}$ 23:       If (S${}_{m}$.getCost() < S${}^{*}$.getCost())   // Update the best solution if necessary 24:         S${}^{*}$ = S${}_{m}$ 25:         solImpAtThisTemp = true       // Make solImpAtThisTemp true 26:     numOfIterAtThisTempCounter = numOfIterAtThisTempCounter - 1 27:     Update the fields used for tabu search 28:   If (solImpAtThisTemp == true) 29:     solNotImpAtConsTempsCounter = 0 30:   Else 31:     solNotImpAtConsTempsCounter = solNotImpAtConsTempsCounter + 1 32:   If (solNotImpAtConsTempsCounter == NUM_OF_CONS_TEMPS_SOL_NOT_IMP) 33:     solNotImpAtConsTempsCounter = 0 34:     If(getRandomFloat() <= ASSIGN_THE_BEST_SOL_RATIO) 35:       S${}_{m}$ = S${}^{*}$  // Assign the best solution to the current solution 36:     Else 37:       S${}_{m}$ ← updateOrdersWithOrderingModel(S${}_{m}$, DC_CAP_MULTIPLIER) 38:       If (S${}_{m}$.getCost()
Effect of fixed fleet finding strategies used in the $findAllRoutes$ procedure
 Instance Strategies are passive Strategies are active MinCost Cost CPU (s) MinCost Cost CPU (s) 5-50-3-3-P6 193242.2 205648.1 0.098 170738.0 175134.7 0.153 5-50-3-3-P7 180165.0 192193.6 0.053 162587.4 164062.5 0.139 5-50-3-3-P8 178610.2 188135.7 0.041 165380.2 170228.2 0.077 5-50-3-3-P9 173728.4 184784.3 0.053 150471.2 156236.2 0.099 5-50-3-3-P10 157350.8 170610.8 0.053 144801.6 148610.9 0.105 Average 176619.3 188274.5 0.060 158795.7 162854.5 0.115
 Instance Strategies are passive Strategies are active MinCost Cost CPU (s) MinCost Cost CPU (s) 5-50-3-3-P6 193242.2 205648.1 0.098 170738.0 175134.7 0.153 5-50-3-3-P7 180165.0 192193.6 0.053 162587.4 164062.5 0.139 5-50-3-3-P8 178610.2 188135.7 0.041 165380.2 170228.2 0.077 5-50-3-3-P9 173728.4 184784.3 0.053 150471.2 156236.2 0.099 5-50-3-3-P10 157350.8 170610.8 0.053 144801.6 148610.9 0.105 Average 176619.3 188274.5 0.060 158795.7 162854.5 0.115
Values assigned to the important constants used in the vehicle routing algorithm
 Constant (Factor) Value Filling degree threshold (fillingDegreeThres)a 0.8 Call frequency for SEH functions (sEHCallFreq)b 30 Number of iterations in the main loop (globalCounter) b 6000 Extra percentage by which the vehicle capacity can be exceeded (extraLoadPerc) b 0.6 afillingDegreeThres is used in SEHWithFixedFleet and SEHWithoutFixedFleet procedures.bsEHCallFreq, globalCounter and extraLoadPerc are used in findRoutes procedure.
 Constant (Factor) Value Filling degree threshold (fillingDegreeThres)a 0.8 Call frequency for SEH functions (sEHCallFreq)b 30 Number of iterations in the main loop (globalCounter) b 6000 Extra percentage by which the vehicle capacity can be exceeded (extraLoadPerc) b 0.6 afillingDegreeThres is used in SEHWithFixedFleet and SEHWithoutFixedFleet procedures.bsEHCallFreq, globalCounter and extraLoadPerc are used in findRoutes procedure.
Values assigned to the important constants, which are used in the intensification process
 Constant (Factor) Value INI_TEMP 45 FRE_TEMP 1 COOLING_SPEED 0.93 NUM_OF_ITERS_AT_ALL_TEMPS 400 NUM_OF_CONS_TEMPS_SOL_NOT_IMP 3 NUM_OF_PHASES 12 ASSIGN_THE_BEST_SOL_RATIO 0.75 DC_FIL_DEGREE_MAX_LEVEL 0.85 DC_FIL_DEGREE_MIN_LEVEL 0.70 DC_CAP_MULTIPLIER 0.80-0.85-0.90 a a These values are used at the first half, at the second half and at the final phase, respectively.
 Constant (Factor) Value INI_TEMP 45 FRE_TEMP 1 COOLING_SPEED 0.93 NUM_OF_ITERS_AT_ALL_TEMPS 400 NUM_OF_CONS_TEMPS_SOL_NOT_IMP 3 NUM_OF_PHASES 12 ASSIGN_THE_BEST_SOL_RATIO 0.75 DC_FIL_DEGREE_MAX_LEVEL 0.85 DC_FIL_DEGREE_MIN_LEVEL 0.70 DC_CAP_MULTIPLIER 0.80-0.85-0.90 a a These values are used at the first half, at the second half and at the final phase, respectively.
Probabilities for the application of intensification moves
 Move's Name Application Probabilities Number of Open DCs > 1 Number of Open DCs = 1 Shift Delivery Move 1 0.30 0.32 Shift Delivery Move 2 0.10 0.11 Shift Delivery Move 3 0.40 0.45 Shift Delivery Move 4 0.10 0.10 Shifting a Retailer Move 0.05 - Swapping Two Retailers Move 0.03 - Finding All of the Routes Move 0.02 0.02
 Move's Name Application Probabilities Number of Open DCs > 1 Number of Open DCs = 1 Shift Delivery Move 1 0.30 0.32 Shift Delivery Move 2 0.10 0.11 Shift Delivery Move 3 0.40 0.45 Shift Delivery Move 4 0.10 0.10 Shifting a Retailer Move 0.05 - Swapping Two Retailers Move 0.03 - Finding All of the Routes Move 0.02 0.02
Values assigned to the important constants used in the diversification process
 Constant (Factor) Value CLOSE_OPEN_DC_RATIO 0.8 CLOSED_DCS_PRI_RATIO 0.7-0.3 a ASSIGN_RETA_RATIO 0.6-0.8 b CLOSED_DCS_RAND_OPENING_RATIO 0.7-0.8 a a The value assigned to the relevant parameter changes with the phase currently in.b The value assigned to the relevant parameter is generated randomly in this interval.
 Constant (Factor) Value CLOSE_OPEN_DC_RATIO 0.8 CLOSED_DCS_PRI_RATIO 0.7-0.3 a ASSIGN_RETA_RATIO 0.6-0.8 b CLOSED_DCS_RAND_OPENING_RATIO 0.7-0.8 a a The value assigned to the relevant parameter changes with the phase currently in.b The value assigned to the relevant parameter is generated randomly in this interval.
Comparison of MILRP models
 M1${}^{G}$ model M1 model Instance CPU (s) CPU (s) 3-5-3-2-P1 298.6 170.6 3-5-3-2-P2 1284.2 453.7 3-5-3-2-P3 484.4 161.7 3-5-3-2-P4 739.5 559.9 3-5-3-2-P5 546.2 423.9 Average 670.6 353.9
 M1${}^{G}$ model M1 model Instance CPU (s) CPU (s) 3-5-3-2-P1 298.6 170.6 3-5-3-2-P2 1284.2 453.7 3-5-3-2-P3 484.4 161.7 3-5-3-2-P4 739.5 559.9 3-5-3-2-P5 546.2 423.9 Average 670.6 353.9
Computational results for very small-sized MILRP instances
 ILOG SHM HHM Instance GAP(1200s) GAP(7200s) Cost CPU(s) Cost GAP ILOG CPU (s) Cost GAP ILOG GAP SHM CPU (s) 3-5-3-2-P1 0.0 0.0 35267.9 220 36952.5 4.6 0.1 36643.6 3.8 -0.8 4.2 3-5-3-2-P2 0.0 0.0 30858.4 45 35045.0 11.9 0.1 33006.8 6.5 -6.2 3.0 3-5-3-3-P1 7.9 2.4 32273.5 3470 35081.8 8.0 0.1 33085.3 2.5 -6.0 4.1 3-5-3-3-P2 3.3 0.0 37305.3 800 37653.9 0.9 0.1 38002.1 1.8 0.9 2.8 3-5-3-3-P3 0.0 0.0 29107.2 1379 29107.2 0.0 0.2 30585.0 4.8 4.8 3.2 3-5-4-2-P1 12.2 0.0 31552.6 3750 31786.9 0.7 0.2 32877.2 4.0 3.3 4.5 3-5-4-2-P2 6.8 2.0 34855.1 350 38254.0 8.9 0.2 38554.6 9.6 0.8 4.5 3-5-4-2-P3 10.1 3.3 33480.8 4700 36148.7 7.4 0.1 36416.3 8.1 0.7 2.6 3-6-3-2-P1 14.6 9.7 38556.4 1966 47082.1 18.1 0.1 43580.0 11.5 -8.0 2.5 3-6-4-3-P1 28.9 14.6 35581.4 7200 41216.3 13.7 0.2 38755.4 8.2 -6.3 3.6 5-10-4-2-P1 76.0 56.9 84643.5 7051 66101.1 -28.1 0.3 65867.8 -28.5 -0.4 10.9 5-10-5-3-P1 73.0 60.4 114260.7 7185 91432.5 -25.0 0.9 85159.8 -34.2 -7.4 18.6 5-12-4-4-P1 78.2 69.4 139721.1 7195 78330.1 -78.4 0.5 74669.7 -87.1 -4.9 17.9 5-12-5-3-P1 79.5 72.1 143038.5 7200 76196.6 -87.7 1.1 74408.4 -92.2 -2.4 19.1 5-15-3-3-P1 79.0 74.7 154831.3 7190 87291.8 -77.4 0.2 83214.9 -86.1 -4.9 12.8 5-15-4-2-P1 80.1 76.9 156552.6 5050 71446.8 -119.1 0.4 71245.0 -119.7 -0.3 17.0 5-15-4-4-P1 89.0 74.7 174019.7 5828 90018.0 -93.3 0.9 90261.9 -92.8 0.3 18.1 5-15-4-7-P1 86.5 78.0 251935.1 3575 113323.5 -122.3 2.1 113618.3 -121.7 0.3 22.1 5-15-5-3-P1 84.6 84.0 243900.1 2450 77672.0 -214.0 1.2 77267.7 -215.7 -0.5 22.4 5-20-6-4-P1 100 89.9 436645.1 4805 119599.3 -265.1 47.4 120897.7 -261.2 1.1 62.0 Average 45.5 38.4 111919.3 4070.5 61987.0 -51.8 2.8 60905.9 -53.9 -1.8 12.8
 ILOG SHM HHM Instance GAP(1200s) GAP(7200s) Cost CPU(s) Cost GAP ILOG CPU (s) Cost GAP ILOG GAP SHM CPU (s) 3-5-3-2-P1 0.0 0.0 35267.9 220 36952.5 4.6 0.1 36643.6 3.8 -0.8 4.2 3-5-3-2-P2 0.0 0.0 30858.4 45 35045.0 11.9 0.1 33006.8 6.5 -6.2 3.0 3-5-3-3-P1 7.9 2.4 32273.5 3470 35081.8 8.0 0.1 33085.3 2.5 -6.0 4.1 3-5-3-3-P2 3.3 0.0 37305.3 800 37653.9 0.9 0.1 38002.1 1.8 0.9 2.8 3-5-3-3-P3 0.0 0.0 29107.2 1379 29107.2 0.0 0.2 30585.0 4.8 4.8 3.2 3-5-4-2-P1 12.2 0.0 31552.6 3750 31786.9 0.7 0.2 32877.2 4.0 3.3 4.5 3-5-4-2-P2 6.8 2.0 34855.1 350 38254.0 8.9 0.2 38554.6 9.6 0.8 4.5 3-5-4-2-P3 10.1 3.3 33480.8 4700 36148.7 7.4 0.1 36416.3 8.1 0.7 2.6 3-6-3-2-P1 14.6 9.7 38556.4 1966 47082.1 18.1 0.1 43580.0 11.5 -8.0 2.5 3-6-4-3-P1 28.9 14.6 35581.4 7200 41216.3 13.7 0.2 38755.4 8.2 -6.3 3.6 5-10-4-2-P1 76.0 56.9 84643.5 7051 66101.1 -28.1 0.3 65867.8 -28.5 -0.4 10.9 5-10-5-3-P1 73.0 60.4 114260.7 7185 91432.5 -25.0 0.9 85159.8 -34.2 -7.4 18.6 5-12-4-4-P1 78.2 69.4 139721.1 7195 78330.1 -78.4 0.5 74669.7 -87.1 -4.9 17.9 5-12-5-3-P1 79.5 72.1 143038.5 7200 76196.6 -87.7 1.1 74408.4 -92.2 -2.4 19.1 5-15-3-3-P1 79.0 74.7 154831.3 7190 87291.8 -77.4 0.2 83214.9 -86.1 -4.9 12.8 5-15-4-2-P1 80.1 76.9 156552.6 5050 71446.8 -119.1 0.4 71245.0 -119.7 -0.3 17.0 5-15-4-4-P1 89.0 74.7 174019.7 5828 90018.0 -93.3 0.9 90261.9 -92.8 0.3 18.1 5-15-4-7-P1 86.5 78.0 251935.1 3575 113323.5 -122.3 2.1 113618.3 -121.7 0.3 22.1 5-15-5-3-P1 84.6 84.0 243900.1 2450 77672.0 -214.0 1.2 77267.7 -215.7 -0.5 22.4 5-20-6-4-P1 100 89.9 436645.1 4805 119599.3 -265.1 47.4 120897.7 -261.2 1.1 62.0 Average 45.5 38.4 111919.3 4070.5 61987.0 -51.8 2.8 60905.9 -53.9 -1.8 12.8
Computational results for small, medium and large-sized MILRP instances
 SHM HHM Instance Cost CPU(s) IM CPU(s) PIM(%) Cost GAP SHM CPU(s) 5-50-3-3-P1 172939.9 0.5 0.3 66.67 167457.3 -3.3 66.1 5-50-3-3-P2 208332.0 0.5 0.4 76.60 207016.9 -0.6 67.7 5-50-3-3-P3 227655.0 0.3 0.2 69.70 221462.7 -2.8 65.9 5-50-3-3-P4 230679.9 0.4 0.3 75.68 215962.2 -6.8 66.3 5-50-3-3-P5 176528.9 0.4 0.3 78.57 162825.3 -8.4 65.1 Average 203227.1 0.4 0.3 73.4 194944.9 -4.4 66.2 15-100-5-5-P1 514177.6 141.8 141.5 99.77 493879.2 -4.1 414.5 15-100-5-5-P2 502955.3 244.1 243.7 99.84 485170.5 -3.7 393.7 15-100-5-5-P3 647847.3 121.8 121.5 99.70 627396.9 -3.3 422.6 15-100-5-5-P4 629868.5 193.1 192.8 99.82 598746.6 -5.2 433.2 15-100-5-5-P5 578960.6 111.8 111.4 99.69 560799.6 -3.2 428.4 Average 574761.9 162.5 162.2 99.8 553198.6 -3.9 418.5 20-150-7-7-P1 1214217.0 3402.7 3382.1 99.39 1129150.2 -7.5 1182.6 20-150-7-7-P2 1042158.5 3602.7 3602.1 99.98 983087.1 -6.0 1294.7 20-150-7-7-P3 1064822.3 3502.9 3475.3 99.21 1023313.9 -4.1 1253.8 20-150-7-7-P4 1115968.3 3627.2 3626.6 99.98 1104168.2 -1.1 1180.7 20-150-7-7-P5 1041073.8 3727.4 3696.8 99.18 1004549.8 -3.6 1182.8 Average 1095648.0 3572.6 3556.6 99.5 1048853.8 -4.5 1218.9
 SHM HHM Instance Cost CPU(s) IM CPU(s) PIM(%) Cost GAP SHM CPU(s) 5-50-3-3-P1 172939.9 0.5 0.3 66.67 167457.3 -3.3 66.1 5-50-3-3-P2 208332.0 0.5 0.4 76.60 207016.9 -0.6 67.7 5-50-3-3-P3 227655.0 0.3 0.2 69.70 221462.7 -2.8 65.9 5-50-3-3-P4 230679.9 0.4 0.3 75.68 215962.2 -6.8 66.3 5-50-3-3-P5 176528.9 0.4 0.3 78.57 162825.3 -8.4 65.1 Average 203227.1 0.4 0.3 73.4 194944.9 -4.4 66.2 15-100-5-5-P1 514177.6 141.8 141.5 99.77 493879.2 -4.1 414.5 15-100-5-5-P2 502955.3 244.1 243.7 99.84 485170.5 -3.7 393.7 15-100-5-5-P3 647847.3 121.8 121.5 99.70 627396.9 -3.3 422.6 15-100-5-5-P4 629868.5 193.1 192.8 99.82 598746.6 -5.2 433.2 15-100-5-5-P5 578960.6 111.8 111.4 99.69 560799.6 -3.2 428.4 Average 574761.9 162.5 162.2 99.8 553198.6 -3.9 418.5 20-150-7-7-P1 1214217.0 3402.7 3382.1 99.39 1129150.2 -7.5 1182.6 20-150-7-7-P2 1042158.5 3602.7 3602.1 99.98 983087.1 -6.0 1294.7 20-150-7-7-P3 1064822.3 3502.9 3475.3 99.21 1023313.9 -4.1 1253.8 20-150-7-7-P4 1115968.3 3627.2 3626.6 99.98 1104168.2 -1.1 1180.7 20-150-7-7-P5 1041073.8 3727.4 3696.8 99.18 1004549.8 -3.6 1182.8 Average 1095648.0 3572.6 3556.6 99.5 1048853.8 -4.5 1218.9
Analysis of ordering cost weight factor
 $\alpha = 1, \beta = 1, \theta = 1, \gamma = 1$ $\alpha = 10, \beta = 1, \theta = 1, \gamma = 1$ Instance TotCapa TotNumOfOrdersa TotInvOfDCsb TotCapa TotNumOfOrdersa TotInvOfDCsb 15-10-5-5-P1 5159 49 643 5371 43 1199 15-10-5-5-P2 5277 46 834 6087 39 3303 15-10-5-5-P3 5410 48 503 6431 38 2715 15-10-5-5-P4 5137 50 0 5570 45 2148 15-10-5-5-P5 5392 48 644 5958 41 2894 aTotCap: Total capacity provided by open DCs, aTotNumOfOrders: Total number of orders.bTotInvOfDCs: Total amount of products in inventories of open DCs comprising all periods.
 $\alpha = 1, \beta = 1, \theta = 1, \gamma = 1$ $\alpha = 10, \beta = 1, \theta = 1, \gamma = 1$ Instance TotCapa TotNumOfOrdersa TotInvOfDCsb TotCapa TotNumOfOrdersa TotInvOfDCsb 15-10-5-5-P1 5159 49 643 5371 43 1199 15-10-5-5-P2 5277 46 834 6087 39 3303 15-10-5-5-P3 5410 48 503 6431 38 2715 15-10-5-5-P4 5137 50 0 5570 45 2148 15-10-5-5-P5 5392 48 644 5958 41 2894 aTotCap: Total capacity provided by open DCs, aTotNumOfOrders: Total number of orders.bTotInvOfDCs: Total amount of products in inventories of open DCs comprising all periods.
Analysis of distribution cost weight factor
 $\alpha = 1, \beta = 1, \theta = 1, \gamma = 1$ $\alpha = 1, \beta = 10, \theta = 1, \gamma = 1$ Instance NumOfOpDCsa TotCapa TotNumOfDistsb TotInvOfDCsc TotInvOfRetsd NumOfOpDCsa TotCapa TotNumOfDistsb TotInvOfDCsc TotInvOfRetsd 15-10-5-5-P1 2 5159 426 643 6404 3 7226 322 6112 13862 15-10-5-5-P2 2 5277 415 834 7056 4 7847 326 6419 14232 15-10-5-5-P3 2 5410 380 503 8410 3 7701 303 6576 15643 15-10-5-5-P4 2 5137 378 0 9575 3 6701 299 3780 14375 15-10-5-5-P5 2 5392 390 644 8052 4 9031 321 9346 13532 aNumOfOpDCs: Number of open DCs, aTotCap: Total capacity provided by open DCs.bTotNumOfDists: Total number of distributions.cTotInvOfDCs: Total amount of products in inventories of open DCs comprising all periods.dTotInvOfRets: Total amount of products in inventories of retailers comprising all periods.
 $\alpha = 1, \beta = 1, \theta = 1, \gamma = 1$ $\alpha = 1, \beta = 10, \theta = 1, \gamma = 1$ Instance NumOfOpDCsa TotCapa TotNumOfDistsb TotInvOfDCsc TotInvOfRetsd NumOfOpDCsa TotCapa TotNumOfDistsb TotInvOfDCsc TotInvOfRetsd 15-10-5-5-P1 2 5159 426 643 6404 3 7226 322 6112 13862 15-10-5-5-P2 2 5277 415 834 7056 4 7847 326 6419 14232 15-10-5-5-P3 2 5410 380 503 8410 3 7701 303 6576 15643 15-10-5-5-P4 2 5137 378 0 9575 3 6701 299 3780 14375 15-10-5-5-P5 2 5392 390 644 8052 4 9031 321 9346 13532 aNumOfOpDCs: Number of open DCs, aTotCap: Total capacity provided by open DCs.bTotNumOfDists: Total number of distributions.cTotInvOfDCs: Total amount of products in inventories of open DCs comprising all periods.dTotInvOfRets: Total amount of products in inventories of retailers comprising all periods.
Analysis of inventory cost weight factor for DCs
 $\alpha = 1, \beta = 1, \theta = 1, \gamma = 1$ $\alpha = 1, \beta = 1, \theta = 100, \gamma = 1$ Instance TotNumOfOrdersa TotInvOfDCsb TotNumOfOrdersa TotInvOfDCsb 15-10-5-5-P1 49 643 50 0 15-10-5-5-P2 46 834 50 0 15-10-5-5-P3 48 503 50 0 15-10-5-5-P4 48 644 50 0 15-10-5-5-P5 40 2315 50 0 aTotNumOfOrders: Total number of orders.bTotInvOfDCs: Total amount of products in inventories of open DCs comprising all periods.
 $\alpha = 1, \beta = 1, \theta = 1, \gamma = 1$ $\alpha = 1, \beta = 1, \theta = 100, \gamma = 1$ Instance TotNumOfOrdersa TotInvOfDCsb TotNumOfOrdersa TotInvOfDCsb 15-10-5-5-P1 49 643 50 0 15-10-5-5-P2 46 834 50 0 15-10-5-5-P3 48 503 50 0 15-10-5-5-P4 48 644 50 0 15-10-5-5-P5 40 2315 50 0 aTotNumOfOrders: Total number of orders.bTotInvOfDCs: Total amount of products in inventories of open DCs comprising all periods.
Analysis of inventory cost weight factor for retailers
 $\alpha = 1, \beta = 1, \theta = 1, \gamma = 1$ $\alpha = 1, \beta = 1, \theta = 1, \gamma = 100$ Instance TotNumOfOrdersa TotNumOfDistsa TotInvOfDCsb TotInvOfRetsc TotNumOfOrdersa TotNumOfDistsa TotInvOfDCsb TotInvOfRetsc 15-10-5-5-P1 49 426 643 6404 46 498 1980 89 15-10-5-5-P2 46 415 834 7056 45 500 2418 7 15-10-5-5-P3 48 380 503 8410 44 497 2621 61 15-10-5-5-P4 48 390 644 8052 45 493 2492 0 15-10-5-5-P5 40 399 2315 8449 39 494 4159 0 aTotNumOfOrders: Total number of orders, aTotNumOfDists: Total number of distributions.bTotInvOfDCs: Total amount of products in inventories of open DCs comprising all periods.cTotInvOfRets: Total amount of products in inventories of retailers comprising all periods.
 $\alpha = 1, \beta = 1, \theta = 1, \gamma = 1$ $\alpha = 1, \beta = 1, \theta = 1, \gamma = 100$ Instance TotNumOfOrdersa TotNumOfDistsa TotInvOfDCsb TotInvOfRetsc TotNumOfOrdersa TotNumOfDistsa TotInvOfDCsb TotInvOfRetsc 15-10-5-5-P1 49 426 643 6404 46 498 1980 89 15-10-5-5-P2 46 415 834 7056 45 500 2418 7 15-10-5-5-P3 48 380 503 8410 44 497 2621 61 15-10-5-5-P4 48 390 644 8052 45 493 2492 0 15-10-5-5-P5 40 399 2315 8449 39 494 4159 0 aTotNumOfOrders: Total number of orders, aTotNumOfDists: Total number of distributions.bTotInvOfDCs: Total amount of products in inventories of open DCs comprising all periods.cTotInvOfRets: Total amount of products in inventories of retailers comprising all periods.
 [1] Anh Son Ta, Le Thi Hoai An, Djamel Khadraoui, Pham Dinh Tao. Solving Partitioning-Hub Location-Routing Problem using DCA. Journal of Industrial and Management Optimization, 2012, 8 (1) : 87-102. doi: 10.3934/jimo.2012.8.87 [2] Tongren Yan, Fuqiang Lu, Suxin Wang, Leizhen Wang, Hualing Bi. A hybrid metaheuristic algorithm for the multi-objective location-routing problem in the early post-disaster stage. Journal of Industrial and Management Optimization, 2022  doi: 10.3934/jimo.2022145 [3] Xuefeng Wang. The heterogeneous fleet location routing problem with simultaneous pickup and delivery and overloads. Discrete and Continuous Dynamical Systems - S, 2019, 12 (4&5) : 1147-1166. doi: 10.3934/dcdss.2019079 [4] Giuseppe Buttazzo, Serena Guarino Lo Bianco, Fabrizio Oliviero. Optimal location problems with routing cost. Discrete and Continuous Dynamical Systems, 2014, 34 (4) : 1301-1317. doi: 10.3934/dcds.2014.34.1301 [5] Nurhadi Siswanto, Stefanus Eko Wiratno, Ahmad Rusdiansyah, Ruhul Sarker. Maritime inventory routing problem with multiple time windows. Journal of Industrial and Management Optimization, 2019, 15 (3) : 1185-1211. doi: 10.3934/jimo.2018091 [6] Shoufeng Ji, Jinhuan Tang, Minghe Sun, Rongjuan Luo. Multi-objective optimization for a combined location-routing-inventory system considering carbon-capped differences. Journal of Industrial and Management Optimization, 2022, 18 (3) : 1949-1977. doi: 10.3934/jimo.2021051 [7] Bariş Keçeci, Fulya Altıparmak, İmdat Kara. A mathematical formulation and heuristic approach for the heterogeneous fixed fleet vehicle routing problem with simultaneous pickup and delivery. Journal of Industrial and Management Optimization, 2021, 17 (3) : 1069-1100. doi: 10.3934/jimo.2020012 [8] Ming-Yong Lai, Chang-Shi Liu, Xiao-Jiao Tong. A two-stage hybrid meta-heuristic for pickup and delivery vehicle routing problem with time windows. Journal of Industrial and Management Optimization, 2010, 6 (2) : 435-451. doi: 10.3934/jimo.2010.6.435 [9] Namsu Ahn, Soochan Kim. Optimal and heuristic algorithms for the multi-objective vehicle routing problem with drones for military surveillance operations. Journal of Industrial and Management Optimization, 2022, 18 (3) : 1651-1663. doi: 10.3934/jimo.2021037 [10] Shengyang Jia, Lei Deng, Quanwu Zhao, Yunkai Chen. An adaptive large neighborhood search heuristic for multi-commodity two-echelon vehicle routing problem with satellite synchronization. Journal of Industrial and Management Optimization, 2022  doi: 10.3934/jimo.2021225 [11] Yaw Chang, Lin Chen. Solve the vehicle routing problem with time windows via a genetic algorithm. Conference Publications, 2007, 2007 (Special) : 240-249. doi: 10.3934/proc.2007.2007.240 [12] Chia-Chun Hsu, Hsun-Jung Cho, Shu-Cherng Fang. Solving routing and wavelength assignment problem with maximum edge-disjoint paths. Journal of Industrial and Management Optimization, 2017, 13 (2) : 1065-1084. doi: 10.3934/jimo.2016062 [13] Huai-Che Hong, Bertrand M. T. Lin. A note on network repair crew scheduling and routing for emergency relief distribution problem. Journal of Industrial and Management Optimization, 2019, 15 (4) : 1729-1731. doi: 10.3934/jimo.2018119 [14] Mingyong Lai, Hongming Yang, Songping Yang, Junhua Zhao, Yan Xu. Cyber-physical logistics system-based vehicle routing optimization. Journal of Industrial and Management Optimization, 2014, 10 (3) : 701-715. doi: 10.3934/jimo.2014.10.701 [15] Gbeminiyi John Oyewole, Olufemi Adetunji. Solving the facility location and fixed charge solid transportation problem. Journal of Industrial and Management Optimization, 2021, 17 (4) : 1557-1575. doi: 10.3934/jimo.2020034 [16] Feliz Minhós, T. Gyulov, A. I. Santos. Existence and location result for a fourth order boundary value problem. Conference Publications, 2005, 2005 (Special) : 662-671. doi: 10.3934/proc.2005.2005.662 [17] Gaidi Li, Zhen Wang, Dachuan Xu. An approximation algorithm for the $k$-level facility location problem with submodular penalties. Journal of Industrial and Management Optimization, 2012, 8 (3) : 521-529. doi: 10.3934/jimo.2012.8.521 [18] Shahede Omidi, Jafar Fathali. Inverse single facility location problem on a tree with balancing on the distance of server to clients. Journal of Industrial and Management Optimization, 2022, 18 (2) : 1247-1259. doi: 10.3934/jimo.2021017 [19] Chenyin Wang, Yaodong Ni, Xiangfeng Yang. The inventory replenishment policy in an uncertain production-inventory-routing system. Journal of Industrial and Management Optimization, 2021  doi: 10.3934/jimo.2021196 [20] Erfan Babaee Tirkolaee, Alireza Goli, Mani Bakhsi, Iraj Mahdavi. A robust multi-trip vehicle routing problem of perishable products with intermediate depots and time windows. Numerical Algebra, Control and Optimization, 2017, 7 (4) : 417-433. doi: 10.3934/naco.2017026

2021 Impact Factor: 1.411

## Tools

Article outline

Figures and Tables