The Genetic Algorithm was first introduced by John H. Holland[1] in 1973. It is an optimization technique based on Charles Darwin’s theory of evolution by natural selection.
Flowchart for GA
Before diving into the algorithm, here are definitions of the basic terminologies.
Gene: The smallest unit that makes up the chromosome (decision variable)
Chromosome: A group of genes, where each chromosome represents a solution (potential solution)
Population: A group of chromosomes (a group of potential solutions)
GA involves the following seven steps:
Initialization
Randomly generate the initial population for a predetermined population size
Evaluation
Evaluate the fitness of every chromosome in the population to see how good it is. Higher fitness implies better solution, making the chromosome more likely to be selected as a parent of next generation
Selection
Natural selection serves as the main inspiration of GA, where chromosomes are randomly selected from the entire population for mating, and chromosomes with higher fitness values are more likely to be selected [2].
Crossover
The purpose of crossover is to create superior offspring (better solutions) by combining parts from each selected parent chromosome. There are different types of crossover, such as single-point and double-point crossover [2]. In single-point crossover, the parent chromosomes are swapped before and after a single point. In double-point crossover, the parent chromosomes are swapped between two points [2].
Mutation
A mutation operator is applied to make random changes to the genes of children's chromosomes, maintaining the diversity of the individual chromosomes in the population and enabling GA to find better solutions[2].
Insertion
Insert the mutated children chromosomes back into the population
Repeat 2-6 until a stopping criteria is met
Maximum number of generations reached
No significant improvement from newer generations
Expected fitness value is achieved
Numerical Example
1. Simple Example
We aim to maximize , where . Chromosomes are encoded as 5-bit binary strings since the binary format of the maximum value 31 is 11111.
1.1 Initialization (Generation 0)
The initial population is randomly generated:
Chromosome (Binary)
x (Decimal)
10010
18
00111
7
11001
25
01001
9
1.2 Generation 1
1.2.1 Evaluation
Calculate the fitness values:
Chromosome
10010
18
324
00111
7
49
11001
25
625
01001
9
81
1.2.2 Selection
Use roulette wheel selection to choose parents for crossover. Selection probabilities are calculated as:
Thus,
Total Fitness
Compute the selection probabilities:
Chromosome
Selection Probability
10010
00111
11001
01001
Cumulative probabilities:
Chromosome
Cumulative Probability
10010
00111
11001
01001
Random numbers for selection:
Selected parents:
Pair 1: 00111 and 11001
Pair 2: 11001 and 10010
1.2.3 Crossover
Crossover probability:
Pair 1: Crossover occurs at position 2.
Parent 1:
Parent 2:
Children: ,
Pair 2: No crossover.
Children: Child 3: , Child 4:
1.2.4 Mutation
Mutation probability: Child 1: (bits: ).
Mutations: Bit 1 and Bit 4 flip.
Resulting chromosome: .
Child 2: (bits: ).
Mutation: Bit 3 flips.
Resulting chromosome: .
Child 3: (bits: ).
Mutations: Bit 1 and Bit 5 flip.
Resulting chromosome: .
Child 4: (bits: ).
Mutations: Bit 1 and Bit 3 flip.
Resulting chromosome: .
1.2.5 Insertion
Chromosome
10011
11011
01000
00110
1.3 Generation 2
1.3.1 Evaluation
Calculate the fitness values:
Chromosome
10011
11011
01000
00110
1.3.2 Selection
Total fitness:
Compute selection probabilities:
Chromosome
Selection Probability
10011
11011
01000
00110
Cumulative probabilities:
Chromosome
Cumulative Probability
10011
11011
01000
00110
Random numbers for selection:
Selected parents:
Pair 1: 10011 and 11011
Pair 2: 11011 and 01000
1.3.3 Crossover
Crossover probability:
Pair 1: Crossover occurs at position 2.
Parent 1:
Parent 2:
Children: ,
Pair 2: Crossover occurs at position 4.
Parent 1:
Parent 2:
Children: ,
1.3.4 Mutation
Mutation probability:
Child 1: No mutations. .
Child 2: Bit 1 flips. .
Child 3: Bit 5 flips. .
Child 4: No mutations. .
1.3.5 Insertion
Chromosome
10011
01011
11010
11011
1.4 Conclusion
After 2 iterations, the best optimal solution we find is .
Due to the limitation of the page, we will not perform additional loops. In the following examples, we will show how to use code to perform multiple calculations on complex problems and specify stopping conditions.
2. Complex Example
We aim to maximize the function:
subject to the constraints:
2.1 Encoding the Variables
Each chromosome represents a pair of variables and . We encode these variables into binary strings:
: , precision , requiring bits.
: , precision , requiring bits.
Each chromosome is a 16-bit binary string, where the first 8 bits represent and the next 8 bits represent .
2.2 Initialization
We randomly generate an initial population of 6 chromosomes. Each chromosome is decoded to its respective and values using the formula:
Initial Population
Initial Population
Chromosome (Binary)
Bits
Bits
(Decimal)
(Decimal)
10101100 11010101
10101100
11010101
01110011 00101110
01110011
00101110
11100001 01011100
11100001
01011100
00011010 10110011
00011010
10110011
11001100 01100110
11001100
01100110
00110111 10001001
00110111
10001001
2.3 Evaluation
Calculate the fitness for each chromosome using the given function. Below are the computed fitness values:
Chromosome (Binary)
10101100 11010101
01110011 00101110
11100001 01011100
00011010 10110011
11001100 01100110
00110111 10001001
2.4 Selection
Use roulette wheel selection to choose parents for crossover.
Total fitness:
Selection probabilities are calculated as:
Chromosome
Fitness
Selection Probability
10101100 11010101
01110011 00101110
11100001 01011100
00011010 10110011
11001100 01100110
00110111 10001001
Selected pairs for crossover:
Pair 1: Chromosome 3 and Chromosome 5
Pair 2: Chromosome 2 and Chromosome 6
Pair 3: Chromosome 1 and Chromosome 4
2.5 Crossover
Perform single-point crossover at position 8 (between and bits).
Pair 1:
Parent 1:
Parent 2:
Child 1:
Child 2:
Repeat for other pairs.
2.6 Mutation
Apply mutation with a small probability (e.g., 1% per bit). Suppose a mutation occurs in Child 1 at bit position 5 of the bits:
The new child becomes:
2.7 Insertion
Evaluate the fitness of offspring and combine with the current population. Select the top 6 chromosomes to form the next generation.
Next Generation
Chromosome (Binary)
11101001 01100110
11100001 01011100
11001100 01100110
10101100 11010101
01110011 00101110
00110111 10001001
2.8 Repeat Steps 2.3-2.7
Using the code to perform the repeating process for 50 more generations we got
Fig.2. 50 iteration results
Based on Fig. 2 we can find the optimal value to be 35.2769.
References
↑ Holland, J. H. (1973). Genetic algorithms and the optimal allocation of trials. SIAM Journal on Computing, 2(2), 88–105
↑ Jump up to: 2.02.12.22.3 Mirjalili, S. (2018). Genetic Algorithm. Evolutionary Algorithms and Neural Networks, Springer, pp. 43–56