Using GA’s to Solve Problems Amy Hoover
What is a Genetic Algorithm? Genetic Algorithm – “a search technique … to find exact or approximate solutions to optimization and search problems.” -Wikipedia
Components of a GA Chromosome Fitness function Mutation Crossover How we represent the individual Fitness function How we rate the individual Mutation Crossover
How do GAs work? Randomize initial population (of 5) Note: These were arbitraily picked A = 10111 B = 11100 C = 00110 D = 00001 E = 11011
Evaluate the fitness of each individual (A, B, C, D, E) in the population A = 10111 (fitness = 1+ 0 + 1 + 1+ 1 = 4) B = 11100 (fitness = 1 + 1 + 1+ 0 + 0 = 3) C = 00110 (fitness = 0 + 0 + 1+ 1 + 0 = 2) D = 00001 (fitness = 0 + 0 + 0+ 0 + 1 = 1) E = 11011 (fitness = 1 + 1 + 0+ 1 + 1 = 4)
Repeat Select parents Who would we choose from the previous generation? (A and E) Mate the parents, they plus their offspring form next generation How do we mate them? What will the next generation look like?
Next Generation A = 10111 (parent 1 clone) E = 11011 (parent 2 clone) F = ? G = ? H = ? Which generation are F, G, and H from?
Next Generation A = 10111 (parent 1) E = 11011 (parent 2) F = ? G = ? H = ? Which generation are F, G, and H from? How can we make F, G, H?
Crossover and Mutation Let’s make F, G, H (Gen 1 from initial generation 0) A = 10111 (parent 1) E = 11011 (parent 2) F = 11111 (Mutate A) G = 11011(Crossover AE 2nd 3rd bits of E on A, also clone E ) H = 10011 (Crossover AE 3rd and 4th of E) Which generation are F, G, and H from? How can we make F, G, H?
Calculate the fitness of each individual A = 10111 (parent 1) E = 11011 (parent 2) F = 11111 (Mutate A) G = 11011 (Crossover AE) H = 10011 (Crossover AE)
Calculate the fitness of each individual G = 11011 = 4 H = 10011 = 3 Select parents (F,G)
Repeat Select parents (A, E, F, G, H) How do we pick the parents? Pick the top 2 from A, E, F, G, H Mate parents (crossover, mutation) Calculate fitness (Repeat Select parents…)
Example Problem: I want to maximize the number of 0’s in a bit string (I want A = 00000) Let’s work through the psuedo code
Example Problem: I want to maximize the number of 0s in a bit string (I want A = 00000) Step 1: Randomize the initial population A = 01101 B = 11011 C = 01010 D = 01111 E = 11111
Example Initial Population (gen 0) B = 11011 C = 01010 D = 01111 E = 11111 Calculate fitness (recall 0’s are good, 1’s are bad, we want to reward good genes!)
Example Initial Population Reward 0’s, not 1’s B = 11011 = 0 + 0 + 1 + 0 + 0 = 1 C = 01010 = 1 + 0 + 1 + 0 + 1 = 3 D = 01111 = 1 + 0 + 0 + 0 +0 = 1 E = 11111 = 0 + 0 + 0 + 0 +0 = 0 Reward 0’s, not 1’s
Example Initial Population A = 01101 = 1 + 0 + 0 + 1 + 0 = 2 B = 11011 = 0 + 0 + 1 + 0 + 0 = 1 C = 01010 = 1 + 0 + 1 + 0 + 1 = 3 D = 01111 = 1 + 0 + 0+ 0+ 0 = 1 E = 11111 = 0 + 0 + 0 + 0 + 0 = 0
Example Who should our parents be? (A and C)
Example Who should our parents be? What next? C = 01010 = 1 + 0 + 1 + 0 + 1 = 3 What next?
Mating! A = 01101 = 1 + 0 + 0 + 1 + 0 = 2 C = 01010 = 1 + 0 + 1 + 0 + 1 = 3 F = 01100 = 3 G = 01110 = 2 H = 01011 = 2
Calculate Fitness! A = 01101 = 1 + 0 + 0 + 1 + 0 = 2 G = 01110 = 2 H = 01011 = 2
Pick the top two! A = 01101 = 1 + 0 + 0 + 1 + 0 = 2 F = 01100 = 3 G = 01110 = 2 H = 01011 = 2 Parents, C and F
Start Over! C = 01010 = 1 + 0 + 1 + 0 + 1 = 3 F = 01100 = 3 G = ? H = ? I = ?