Skip to main content
Log in

An exact cooperative method for the uncapacitated facility location problem

  • Full Length Paper
  • Published:
Mathematical Programming Computation Aims and scope Submit manuscript

Abstract

In this paper, we present a cooperative primal-dual method to solve the uncapacitated facility location problem exactly. It consists of a primal process, which performs a variation of a known and effective tabu search procedure, and a dual process, which performs a lagrangian branch-and-bound search. Both processes cooperate by exchanging information which helps them find the optimal solution. Further contributions include new techniques for improving the evaluation of the branch-and-bound nodes: decision-variable bound tightening rules applied at each node, and a subgradient caching strategy to improve the bundle method applied at each node.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3

Similar content being viewed by others

Notes

  1. Naturally, in a practical setting, this argument may be completely irrelevant. Furthermore, our method may benefit from having more than just one primal process. We can easily imagine that better results may be achieved by running several different primal heuristics concurrently in addition to our tabu search procedure.

References

  1. Barahona, F., Anbil, R.: The volume algorithm: producing primal solutions with a subgradient method. Math. Program. 87(3), 385–399 (2000)

    Article  MATH  MathSciNet  Google Scholar 

  2. Beasley, J. E.: Lagrangean heuristics for location problems. Eur. J. Oper. Res. 65(3), 383–399 (1993)

    Google Scholar 

  3. Beltran, C., Tadonki, C., Vial, J. P.: Solving the p-median problem with a semi-lagrangian relaxation. Comput. Optim. Appl. 35(2), 239–260 (2006)

    Google Scholar 

  4. Beltran-Royo, C., Vial, J.P., Alonso-Ayuso, A.: Semi-lagrangian relaxation applied to the uncapacitated facility location problem. Comput. Optim. Appl. 51(1), 387–409 (2012)

    Google Scholar 

  5. Bilde, O., Krarup, J.: Sharp lower bounds and efficient algorithms for the simple plant location problem. Ann. Discret. Math. 1, 79–97 (1977)

    Article  MathSciNet  Google Scholar 

  6. Bloom, B. H.: Space/time trade-offs in hash coding with allowable errors. Commun. ACM 13(7), 422–426 (1970)

    Google Scholar 

  7. Byrka, J., Aardal, K.: An optimal bifactor approximation algorithm for the metric uncapacitated facility location problem. SIAM J. Comput. 39(6), 2212–2231 (2010)

    Article  MATH  MathSciNet  Google Scholar 

  8. Conn, A. R., Cornuejols, G.: A projection method for the uncapacitated facility location problem. Math. Program. 46(1), 273–298 (1990)

    Google Scholar 

  9. Cornuejols, G., Nemhauser, G.L., Wolsey, L.A.: The uncapacitated facility location problem. In: Mirchandani, P.B., Francis, R.L. (eds.) Discrete Location Theory, pp. 1–54. Wiley, New York (1983)

  10. Cura, T.: A parallel local search approach to solving the uncapacitated warehouse location problem. Comput. Ind. Eng. 59(4), 1000–1009 (2010)

    Article  Google Scholar 

  11. Erlenkotter, D.: A dual-based procedure for uncapacitated facility location. Oper. Res. 26(6), 992–1009 (1978)

    Article  MATH  MathSciNet  Google Scholar 

  12. Flaxman, A. D., Frieze, A. M., Vera, J. C.: On the average case performance of some greedy approximation algorithms for the uncapacitated facility location problem. Comb. Probab. Comput. 16(05), 713–732 (2007)

    Google Scholar 

  13. Galvão, R. D., Raggi, L. A.: A method for solving to optimality uncapacitated location problems. Ann. Oper. Res. 18(1), 225–244 (1989)

    Google Scholar 

  14. Ghosh, D.: Neighborhood search heuristics for the uncapacitated facility location problem. Eur. J. Oper. Res. 150(1), 150–162 (2003)

    Article  MATH  Google Scholar 

  15. Glover, F.: A template for scatter search and path relinking. In: Artificial evolution, pp. 1–51. Springer, Berlin (1998)

  16. Goldengorin, B., Ghosh, D., Sierksma, G.: Branch and peg algorithms for the simple plant location problem. In: Computers and operations research. Comput. Oper. Res. 30(1), 967–981 (2003)

  17. Goldengorin, B., Tijssen, G. A., Ghosh, D., Sierksma, G.: Solving the simple plant location problem using a data correcting approach. J. Global Optim. 25(4), 377–406 (2003)

    Google Scholar 

  18. Guner, A. R., Sevkli, M.: A discrete particle swarm optimization algorithm for uncapacitated facility location problem. J. Artif. Evol. Appl. 2008, 1–9 (2008)

  19. Hansen, P., Brimberg, J., Urošević, D., Mladenović, N.: Primal-dual variable neighborhood search for the simple plant-location problem. INFORMS J. Comput. 19(4), 552 (2007)

    Article  MATH  MathSciNet  Google Scholar 

  20. Hiriart-Urruty, J.B., Lemaréchal, C.: Convex analysis and minimization algorithms: Fundamentals, vol. 305. Springer, Berlin (1996)

  21. Homberger, J., Gehring, H.: A two-level parallel genetic algorithm for the uncapacitated warehouse location problem. In: Hawaii international conference on system sciences, proceedings of the 41st Annual, p. 67. IEEE (2008)

  22. Julstrom, B.: A permutation coding with heuristics for the uncapacitated facility location problem. Recent advances in evolutionary computation for combinatorial optimization. pp. 295–307 (2008)

  23. Körkel, M.: On the exact solution of large-scale simple plant location problems. Eur. J. Oper. Res. 39(2), 157–173 (1989)

    Article  MATH  Google Scholar 

  24. Krarup, J., Pruzan, P. M.: The simple plant location problem: survey and synthesis. Eur. J. Oper. Res. 12(1), 36–81 (1983)

    Google Scholar 

  25. Kratica, J., Tošic, D., Filipović, V., Ljubić, I.: Solving the simple plant location problem by genetic algorithm. Oper. Res. 35(1), 127–142 (2001)

    Article  MATH  MathSciNet  Google Scholar 

  26. Labbe, M., Louveaux, F.: Location problems. In: Dell’Amico, M., Maffioli, F., Martello, S. (eds.) Annotated bibliographies in combinatorial optimization, pp. 261–281. Wiley, New York (1997)

  27. Letchford, A. N., Miller, S. J.: An aggressive reduction scheme for the simple plant location problem. Tech. rep., Department of Management Science, Lancaster University (2011)

  28. Letchford, A. N., Miller, S. J.: Fast bounding procedures for large instances of the simple plant location problem. Comput. Oper. Res. 39(5), 985–990 (2012)

    Google Scholar 

  29. Li, S.: A 1.488 approximation algorithm for the uncapacitated facility location problem. Automata, languages and programming, pp. 77–88 (2011)

  30. Mahdian, M., Ye, Y., Zhang, J.: Approximation algorithms for metric facility location problems. SIAM J. Comput. 36(2), 411–432 (2006)

    Article  MATH  MathSciNet  Google Scholar 

  31. Michel, L., Van Hentenryck, P.: A simple tabu search for warehouse location. Eur. J. Oper. Res. 157(3), 576–591 (2004)

    Article  MATH  Google Scholar 

  32. Mladenović, N., Brimberg, J., Hansen, P.: A note on duality gap in the simple plant location problem. Eur. J. Oper. Res. 174(1), 11–22 (2006)

    Article  MATH  Google Scholar 

  33. Muter, İ., Birbil, S. I., Sahin, G.: Combination of metaheuristic and exact algorithms for solving set covering-type optimization problems. INFORMS J. Comput. 22(4), 603–619 (2010)

    Google Scholar 

  34. Nesterov, Y.: Smooth minimization of non-smooth functions. Math. Program. 103(1), 127–152 (2005)

    Article  MATH  MathSciNet  Google Scholar 

  35. Resende, M. G.C., Werneck, R. F.: A hybrid multistart heuristic for the uncapacitated facility location problem. Eur. J. Oper. Res. 174(1), 54–68 (2006)

    Google Scholar 

  36. Sun, M.: Solving the uncapacitated facility location problem using tabu search. Comput. Oper. Res. 33(9), 2563–2589 (2006)

    Article  MATH  MathSciNet  Google Scholar 

Download references

Acknowledgments

We wish to thank Paul-Virak Khuong who kindly helped us with our code, improving its performance significantly. We are also grateful to Antonio Frangioni for his bundle method implementation and for taking the time to answer our questions. Finally, we wish to thank the referees and editors which helped improve this paper.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Marius Posta.

Appendices

Appendix A: Cache implementation details

An efficient implementation of \(\mathcal {C}\) is crucial to its performance. In our implementation, \(\mathcal {C}\) is a FIFO queue whose maximal size is a predefined parameter. Consequently, an insertion of a new element into a full \(\mathcal {C}\) is preceded by the removal of its oldest element. When inserting a new element into \(\mathcal {C}\), our implementation does not examine the contents of \(\mathcal {C}\) to detect if it is already present, but instead it tests its presence using a counting Bloom filter. A Bloom filter is a data structure originally proposed by Bloom [6] which allows testing efficiently whether a set contains an element (with occasional false positives, but no false negatives). A counting Bloom filter is a variant defined using any vector \(\varvec{\mathbf {\beta }}\) of positive integers and a set \(H\) of different hash functions \(h \in H\) which each map any element possibly in \(\mathcal {C}\) to an index of \(\varvec{\mathbf {\beta }}\):

  • if an element \(e\) is added into \(\mathcal {C}\), then increment \(\varvec{\mathbf {\beta }}_{h(e)}\) by 1 for all \(h \in H\),

  • therefore an element \(e\) is certainly not in \(\mathcal {C}\) if there exists \(h \in H\) for which \(\varvec{\mathbf {\beta }}_{h(e)} = 0\),

  • if an element \(e\) is removed from \(\mathcal {C}\), then decrement \(\varvec{\mathbf {\beta }}_{h(e)}\) by 1 for all \(h \in H\).

Bloom filters are efficient in time and in space even for very large sets. By hard-coding the maximum size of \(\mathcal {C}\) to \(2^{16}-1\) elements, we implemented \(\varvec{\mathbf {\beta }}\) as an array of 16-bit unsigned integers. In our implementation, the dimension of this array is in the low hundred thousands, and \(|H| = 7\). As a consequence, the probability of false positives when testing whether \(e \in \mathcal {C}\) is less than 1%.

When trying to insert a new element \(e\) into \(\mathcal {C}\), the following steps are performed:

  1. 1.

    If \(\varvec{\mathbf {\beta }}_{h(e)} > 0\) for all \(h \in H\), then \(e\) is probably already in \(\mathcal {C}\): go to step 4.

  2. 2.

    If \(\mathcal {C}\) is full, then remove the oldest element \(e'\) in \(\mathcal {C}\) and decrement \(\varvec{\mathbf {\beta }}_{h(e')}\) by 1 for all \(h \in H\).

  3. 3.

    Insert \(e\) into \(\mathcal {C}\) and increment \(\varvec{\mathbf {\beta }}_{h(e)}\) by 1 for all \(h \in H\).

  4. 4.

    Done.

The counting Bloom filter thus ensures the unicity of the elements in \(\mathcal {C}\).

Appendix B: Bundle method iteration limits

Recall that the elements stored in \(\mathcal {C}\) are key-value pairs specifying first-order outer approximations of lagrangian dual functions, and the purpose of \(\mathcal {C}\) is to provide valid approximations to populate the bundle. Recall also that in our method we apply a bundle method during the evaluation of each node \((\varvec{\mathbf {p}}{},\underline{n}{},\overline{n}{},{\bar{\varvec{\mathbf {\mu }}}})\) selected in \(\mathcal {Q}\) by the Branch-and-bound procedure, and that the initial trial point \(\varvec{\mathbf {\mu }}^{(0)}\) is set to \(\bar{\varvec{\mathbf {\mu }}}\), i.e. the best vector of multipliers found for the parent node. Once our implementation has identified a subset \(S\) of valid \((\varvec{\mathbf {\sigma }}, \epsilon )\) pairs present in \(\mathcal {C}\), it does not immediately update the bundle with all pairs in \(S\). We have found it more convenient to update the bundle using at most \(b\) pairs in \(S\), with \(b\) being the maximum bundle size minus 1. This seemingly arbitrary choice was partly due to certain limitations of [B]TT (the bundle method implementation which we use), however it seems to be effective. In the case where the valid subset size exceeds this number, we update the bundle with the \(b\) pairs in \(S\) selected as follows: let \(\varvec{\mathbf {\mu }}^{(0)}\) be the initial trial point of the bundle method, we select \((\varvec{\mathbf {\sigma }}, \epsilon ) \in S\) minimizing the value \(\sum _{j=1}^m\varvec{\mathbf {\mu }}^{(0)} \varvec{\mathbf {\sigma }}_j + \epsilon \). In this manner, we select the most accurate first-order outer approximations, the value \(\sum _{j=1}^m\varvec{\mathbf {\mu }}^{(0)} \varvec{\mathbf {\sigma }}_j + \epsilon - \phi (\varvec{\mathbf {p}}{},\underline{n}{},\overline{n}{},{\varvec{\mathbf {\mu }}^{(0)}})\) being the error at \(\varvec{\mathbf {\mu }}^{(0)}\) of the approximation defined by \((\varvec{\mathbf {\sigma }}, \epsilon )\).

Recall that in our implementation, a hard limit on the number of iterations to be performed by an application of the bundle method is set. This is either iter_limit_initial for the very first application (at the beginning of which the cache is empty), or iter_limit_other for the others. In all applications other than the first, we use iter_limit_other - \(\min \{b, |S|\}\) as the actual iteration limit. In this manner, and provided that iter_limit_other >\(b\), the intensity of the search for the optimal multiplier is inversely proportional to the size of the initial bundle, and hence indirectly to the quality of the model of the lagrangian dual.

Appendix C: Fast floating point arithmetic

A large part of the computational effort is expended in the following computations within the bundle method:

  • computing reduced costs \(\bar{\varvec{\mathbf {c}}}^{\varvec{\mathbf {\mu }}}\),

  • generating a subgradient \(\varvec{\mathbf {\sigma }}^{(t)}\),

  • computing \(\sum _{j=1}^m\varvec{\mathbf {\mu }}_j^{(0)} \varvec{\mathbf {\sigma }}_j + \epsilon \).

While the theoretical complexity of these operations cannot be reduced, in practice we can speed these up by performing as many of them as possible in the SSE registers which are now standard on x86 processors. Consider the computation of the reduced costs given \(\varvec{\mathbf {\mu }}\in \mathbb {R}^m\):

$$\begin{aligned} \forall i \in \{1,\ldots ,n\},\quad \bar{\varvec{\mathbf {c}}}^{\varvec{\mathbf {\mu }}}_i \leftarrow \,\varvec{\mathbf {c}}_i + \sum _{j=1}^m\min \left\{ 0, \varvec{\mathbf {s}}_{ij} - \varvec{\mathbf {\mu }}_j\right\} . \end{aligned}$$

The sum of the minima can be performed in the SSE registers several minima at a time. Similarly, the computation of \(\sum _{j=1}^m\varvec{\mathbf {\mu }}_j^{(0)} \varvec{\mathbf {\sigma }}_j + \epsilon \) for all suitable \((\varvec{\mathbf {\sigma }},\epsilon )\) pairs identified at the beginning of a bundle method consists mainly of a dot product. This operation can be performed by the BLAS function ddot, and recent implementations of BLAS will perform several products simultaneously.

The generation of the subgradient \(\varvec{\mathbf {\sigma }}^{(t)}\) was specified earlier as follows:

$$\begin{aligned} \forall j \in \{1,\ldots ,m\}, \quad \varvec{\mathbf {\sigma }}^{(t)}_j \leftarrow \,1 - \left| \left\{ i \in \{1,\ldots ,n\}: \underline{\varvec{\mathbf {x}}}_i^{(t)}= 1, \varvec{\mathbf {s}}_{ij} < \varvec{\mathbf {\mu }}_j^{(t)}\right\} \right| , \end{aligned}$$

but can be rewritten using the following vectors \(\varvec{\mathbf {v}}^i \in \{0,1\}^m\), \(i \in \{1,\ldots ,n\}\):

$$\begin{aligned} \varvec{\mathbf {\sigma }}^{(t)}\leftarrow (1, 1, \ldots , 1) - \sum ^n_{\begin{array}{c} i=1 \\ \underline{\varvec{\mathbf {x}}}_i^{(t)}= 1 \end{array}} \varvec{\mathbf {v}}^i, \end{aligned}$$
$$\begin{aligned} \text { with } \forall i \in \{1,\ldots ,n\}, \forall j \in \{1,\ldots ,m\}, \; \varvec{\mathbf {v}}^i_j = {\left\{ \begin{array}{ll} 1 &{} \text {if } \varvec{\mathbf {s}}_{ij} < \varvec{\mathbf {\mu }}_j^{(t)}, \\ 0 &{} \text {otherwise}. \end{array}\right. } \end{aligned}$$

Using SSE registers, we can compute several components of a vector \(\varvec{\mathbf {v}}^i\) simultaneously.

Rights and permissions

Reprints and permissions

About this article

Cite this article

Posta, M., Ferland, J.A. & Michelon, P. An exact cooperative method for the uncapacitated facility location problem. Math. Prog. Comp. 6, 199–231 (2014). https://doi.org/10.1007/s12532-014-0065-z

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s12532-014-0065-z

Mathematics Subject Classification

Navigation