Given a collection of warehouse locations, each with a fixed cost, and customers to be served from those warehouses, each with a cost associated with both the customer and the one warehouse from which the customer is served, the uncapacitated facility location problem seeks to identify a subset of the warehouse locations that minimizes the total cost. A genetic algorithm for this NP-hard problem encodes candidate subsets of the warehouse locations as permutations of all the available locations; a greedy decoder identifies the subset that such a chromosome represents. Three heuristic extensions reorder chromosomes so that they list included locations before excluded; mutate chromosomes by always swapping an included location with an arbitrary one, and re-scan the included locations to exclude any whose exclusion reduces the total cost. Four versions of the CA implement none, one, two, or all of these extensions. In tests on 235 publicly available problem instances whose optimum solutions are known, all the versions outperform a straightforward binary-coded CA, and the heuristic extensions enable the version that uses them all to find optimum solutions very quickly on almost every trial on the test instances. The heuristic techniques should be effective in permutation-coded evolutionary algorithms for other problems that seek subsets of initially unknown sizes.