An effective heuristic for large-scale capacitated facility location problems