Optimal and heuristic algorithms for multiproduct uncapacitated facility location