Genetic algorithms (GAs) are a family of search methods that have been shown to be effective in finding optimal or near-optimal solutions to a wide range of optimization problems. A GA maintains a population of solutions to the problem being solved and uses crossover, mutation, and selection operations to iteratively modify them. As the population evolves across generations, better solutions are created and inferior ones are selectively discarded. GAs usually run for a fixed number of iterations (generations) or until further improvements do not obtain. This contribution discusses the fundamental principles of genetic algorithms and uses Python code to illustrate how GAs can be developed for both numerical and spatial optimization problems. Computational experiments are used to demonstrate the effectiveness of GAs and to illustrate some nuances in GA design.
- Create an artificial genome that can be used in a genetic algorithm to solve a specific problem
- Describe a cluster in a way that could be represented in a genome
- Explain how and why the representation of a GA’s chromosome strings can enhance or hinder the effectiveness of the GA
- Use one of the many freely available GA packages to apply a GA to implement a simple genetic algorithm to a simple problem, such as optimizing the location of one or more facilities or optimizing the selection of habitat for a nature preserve geospatial pattern optimization (such as for finding clusters of disease points)
- Describe a potential solution for a problem in a way that could be represented in a chromosome and evaluated according to some measure of fitness (such as the total distance everyone travels to the facility or the diversity of plants and animals that would be protected) genome