A cutting plane algorithm for capacitated facility location problems