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  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 & Management Optimization, 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.  Google Scholar

[2]

D. Blanchard, Supply Chain Management Best Practices, John Wiley & Sons, 2010. Google Scholar

[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.  Google Scholar

[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.  Google Scholar

[5]

F. Glover and M. Laguna, Tabu search, In Handbook of Combinatorial Optimization, Vol. 3, Kluwer Acad. Publ., Boston, MA, 1998,621–757.  Google Scholar

[6]

M. G. Granada and C. W. Silva, Inventory Location Routing problem: A column Generation Approach, PhD thesis, Uniandes, 2011. Google Scholar

[7]

W. J. GuerreroC. ProdhonN. 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.  Google Scholar

[8]

W. J. GuerreroC. ProdhonN. 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.  Google Scholar

[9]

A. HiassatA. Diabat and I. Rahwan, A genetic algorithm approach for location-inventory-routing problem with perishable products, Journal of Manufacturing Systems, 42 (2017), 93-103.   Google Scholar

[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.   Google Scholar

[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.  Google Scholar

[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.  Google Scholar

[13]

H. Ma and R. Davidrajuh, An iterative approach for distribution chain design in agile virtual environment, Industrial Management & Data Systems, 2005. Google Scholar

[14]

N. NekooghadirliR. Tavakkoli-MoghaddamV. 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.  Google Scholar

[15]

U. PashaA. 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.  Google Scholar

[16]

S. R. Sajjadi, M. Hamidi and S. H. Cheraghi, Multi-product capacitated location routing inventory problem, International Journal of Modern Engineering, 13 (2013). Google Scholar

[17]

N. I. SaragihN. BahagiaI. 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.   Google Scholar

[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.  Google Scholar

[19]

Y. ZhangM. QiL. Miao and E. Liu, Hybrid metaheuristic solutions to inventory location routing problem, Transportation Research Part E: Logistics and Transportation Review, 70 (2014), 305-323.   Google Scholar

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.  Google Scholar

[2]

D. Blanchard, Supply Chain Management Best Practices, John Wiley & Sons, 2010. Google Scholar

[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.  Google Scholar

[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.  Google Scholar

[5]

F. Glover and M. Laguna, Tabu search, In Handbook of Combinatorial Optimization, Vol. 3, Kluwer Acad. Publ., Boston, MA, 1998,621–757.  Google Scholar

[6]

M. G. Granada and C. W. Silva, Inventory Location Routing problem: A column Generation Approach, PhD thesis, Uniandes, 2011. Google Scholar

[7]

W. J. GuerreroC. ProdhonN. 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.  Google Scholar

[8]

W. J. GuerreroC. ProdhonN. 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.  Google Scholar

[9]

A. HiassatA. Diabat and I. Rahwan, A genetic algorithm approach for location-inventory-routing problem with perishable products, Journal of Manufacturing Systems, 42 (2017), 93-103.   Google Scholar

[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.   Google Scholar

[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.  Google Scholar

[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.  Google Scholar

[13]

H. Ma and R. Davidrajuh, An iterative approach for distribution chain design in agile virtual environment, Industrial Management & Data Systems, 2005. Google Scholar

[14]

N. NekooghadirliR. Tavakkoli-MoghaddamV. 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.  Google Scholar

[15]

U. PashaA. 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.  Google Scholar

[16]

S. R. Sajjadi, M. Hamidi and S. H. Cheraghi, Multi-product capacitated location routing inventory problem, International Journal of Modern Engineering, 13 (2013). Google Scholar

[17]

N. I. SaragihN. BahagiaI. 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.   Google Scholar

[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.  Google Scholar

[19]

Y. ZhangM. QiL. Miao and E. Liu, Hybrid metaheuristic solutions to inventory location routing problem, Transportation Research Part E: Logistics and Transportation Review, 70 (2014), 305-323.   Google Scholar

Figure 1.  Representation of the problem
Figure 2.  Representation of the shift delivery move 2
Figure 3.  Effect of the SEH sub-procedures used in the findRoutes procedure
Figure 4.  Analysis of intensifications' phases and diversifications
Table 1.  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
Table 2.  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
Table 3.  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} $
Table 4.  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} $
Table 5.  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^*$
Table 6.  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
Table 7.  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() <S$ {}^{*} $.getCost())   // If the best solution is improved
39:         S$ {}^{*} $ = S$ {}_{m} $
40:   temp = temp * COOLING_SPEED     // Update the current temperature
41: findAllRoutes(S$ {}^{*} $ )   // Find all of the routes for the best solution again
42: $S^*$← optimizeDCsCapLevelsAndOrders(S*)
43: return S$ {}^{*} $
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() <S$ {}^{*} $.getCost())   // If the best solution is improved
39:         S$ {}^{*} $ = S$ {}_{m} $
40:   temp = temp * COOLING_SPEED     // Update the current temperature
41: findAllRoutes(S$ {}^{*} $ )   // Find all of the routes for the best solution again
42: $S^*$← optimizeDCsCapLevelsAndOrders(S*)
43: return S$ {}^{*} $
Table 19.  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
Table 8.  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.
Table 9.  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.
Table 10.  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
Table 11.  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.
Table 12.  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
Table 13.  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
Table 14.  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
Table 15.  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.
Table 16.  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.
Table 17.  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.
Table 18.  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 & Management Optimization, 2012, 8 (1) : 87-102. doi: 10.3934/jimo.2012.8.87

[2]

Xuefeng Wang. The heterogeneous fleet location routing problem with simultaneous pickup and delivery and overloads. Discrete & Continuous Dynamical Systems - S, 2019, 12 (4&5) : 1147-1166. doi: 10.3934/dcdss.2019079

[3]

Giuseppe Buttazzo, Serena Guarino Lo Bianco, Fabrizio Oliviero. Optimal location problems with routing cost. Discrete & Continuous Dynamical Systems, 2014, 34 (4) : 1301-1317. doi: 10.3934/dcds.2014.34.1301

[4]

Nurhadi Siswanto, Stefanus Eko Wiratno, Ahmad Rusdiansyah, Ruhul Sarker. Maritime inventory routing problem with multiple time windows. Journal of Industrial & Management Optimization, 2019, 15 (3) : 1185-1211. doi: 10.3934/jimo.2018091

[5]

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 & Management Optimization, 2021  doi: 10.3934/jimo.2021051

[6]

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 & Management Optimization, 2021, 17 (3) : 1069-1100. doi: 10.3934/jimo.2020012

[7]

Namsu Ahn, Soochan Kim. Optimal and heuristic algorithms for the multi-objective vehicle routing problem with drones for military surveillance operations. Journal of Industrial & Management Optimization, 2021  doi: 10.3934/jimo.2021037

[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 & Management Optimization, 2010, 6 (2) : 435-451. doi: 10.3934/jimo.2010.6.435

[9]

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

[10]

Chia-Chun Hsu, Hsun-Jung Cho, Shu-Cherng Fang. Solving routing and wavelength assignment problem with maximum edge-disjoint paths. Journal of Industrial & Management Optimization, 2017, 13 (2) : 1065-1084. doi: 10.3934/jimo.2016062

[11]

Huai-Che Hong, Bertrand M. T. Lin. A note on network repair crew scheduling and routing for emergency relief distribution problem. Journal of Industrial & Management Optimization, 2019, 15 (4) : 1729-1731. doi: 10.3934/jimo.2018119

[12]

Mingyong Lai, Hongming Yang, Songping Yang, Junhua Zhao, Yan Xu. Cyber-physical logistics system-based vehicle routing optimization. Journal of Industrial & Management Optimization, 2014, 10 (3) : 701-715. doi: 10.3934/jimo.2014.10.701

[13]

Gbeminiyi John Oyewole, Olufemi Adetunji. Solving the facility location and fixed charge solid transportation problem. Journal of Industrial & Management Optimization, 2021, 17 (4) : 1557-1575. doi: 10.3934/jimo.2020034

[14]

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

[15]

Shahede Omidi, Jafar Fathali. Inverse single facility location problem on a tree with balancing on the distance of server to clients. Journal of Industrial & Management Optimization, 2020  doi: 10.3934/jimo.2021017

[16]

Gaidi Li, Zhen Wang, Dachuan Xu. An approximation algorithm for the $k$-level facility location problem with submodular penalties. Journal of Industrial & Management Optimization, 2012, 8 (3) : 521-529. doi: 10.3934/jimo.2012.8.521

[17]

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 & Optimization, 2017, 7 (4) : 417-433. doi: 10.3934/naco.2017026

[18]

Ahmed Tarajo Buba, Lai Soon Lee. Differential evolution with improved sub-route reversal repair mechanism for multiobjective urban transit routing problem. Numerical Algebra, Control & Optimization, 2018, 8 (3) : 351-376. doi: 10.3934/naco.2018023

[19]

Tao Zhang, W. Art Chaovalitwongse, Yue-Jie Zhang, P. M. Pardalos. The hot-rolling batch scheduling method based on the prize collecting vehicle routing problem. Journal of Industrial & Management Optimization, 2009, 5 (4) : 749-765. doi: 10.3934/jimo.2009.5.749

[20]

Mingyong Lai, Xiaojiao Tong. A metaheuristic method for vehicle routing problem based on improved ant colony optimization and Tabu search. Journal of Industrial & Management Optimization, 2012, 8 (2) : 469-484. doi: 10.3934/jimo.2012.8.469

2019 Impact Factor: 1.366

Metrics

  • PDF downloads (23)
  • HTML views (137)
  • Cited by (0)

Other articles
by authors

[Back to Top]