* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Genetic Algorithms
No-SCAR (Scarless Cas9 Assisted Recombineering) Genome Editing wikipedia , lookup
Point mutation wikipedia , lookup
Deoxyribozyme wikipedia , lookup
Non-coding DNA wikipedia , lookup
Designer baby wikipedia , lookup
Pathogenomics wikipedia , lookup
Minimal genome wikipedia , lookup
Genetic engineering wikipedia , lookup
Biology and consumer behaviour wikipedia , lookup
Polymorphism (biology) wikipedia , lookup
Site-specific recombinase technology wikipedia , lookup
Koinophilia wikipedia , lookup
Human genome wikipedia , lookup
Human genetic variation wikipedia , lookup
Genomic library wikipedia , lookup
Genetic drift wikipedia , lookup
History of genetic engineering wikipedia , lookup
Public health genomics wikipedia , lookup
Whole genome sequencing wikipedia , lookup
Group selection wikipedia , lookup
Genome (book) wikipedia , lookup
Human Genome Project wikipedia , lookup
Genome editing wikipedia , lookup
Gene expression programming wikipedia , lookup
Population genetics wikipedia , lookup
GENETIC ALGORITHMS Steve Foster INTRODUCTION Genetic Algorithms are based on the principals of evolutionary biology in order to find solutions to problems In nature the evolution of species is a successful and robust method for ensuring that biological systems survive in their environment It can be seen as a search problem, in which the survival of solutions is determined by a form of natural selection HOW WE EVOLVE Natural Selection Strong members of a population survive to reproduce, passing on their ‘strong’ traits Crossover Some from parent A, some from parent B Mutation A strange flipped gene that cannot be traced back to a parent BIOLOGY TO GENETIC ALGORITHM Gene = smallest atom of data Usually binary, so 0 or 1 Genome = string of genes 0111010010010101 Genome Pool = set of genomes Represents our population THE BASIC IDEA Start with a completely random genome pool Each of these decomposes to a (potential) solution to our problem Gradually solution. evolve our way to a FITNESS / STRENGTH HEURISTIC Turns a binary string into a single floating point value based on how close to our desired result it is Maps back to how well an organism can survive in an environment 0.0f = terrible 1.0f = absolute solution A BASIC GENETIC ALGORITHM Start with a random genome pool of n members. Run strength heuristic on each random genome in the pool. ‘Randomly’ crossbreed strong members of the population until you have n new genomes. Introduce some mutation. Repeat until the strength heuristic returns a value within our threshold. REAL WORLD PROBLEMS There are a number of different issues that need to be addressed Representing the problem Assessing fitness Determining selection Modelling crossover and mutation SELECTION Determines the survival of the fittest How can we determine the value of genetic material? Could be a good substring within an overall poor solution Therefore it may be worth saving some of the weaker solutions SELECTION Roulette Wheel Selection Fitness proportionate Probabilistically select a number of members of the population to add crossbreed SELECTION Rank selection Calculate the fitness of each hypothesis Arrange them in decreasing order of fitness Pick the fittest n hypothesis for mating SELECTION Tournament Selection Two hypothesis are chosen at random from the current population The fittest solution is selected for survival and mating The selection criteria yields a more diverse gene pool than roulette wheel selection CROSSOVER Crossover is the process of mating in order to combine the genetic material of fit solutions There are a number of different ways to combine two hypothesis, which lead to differences in future populations The simplest method takes the two parents and creates two children by combining the two halves of each solution SIMPLE CROSSOVER Parents Children MULTIPLE POINT CROSSOVER Parents Children MUTATION Random mutation is a feature of conventional genetics where accidents of nature lead to random changes in the genetic makeup In some cases these changes can be disastrous, in other cases they can be highly advantageous In binary strings Can be modelled by randomly flipping a small percentage of bits In other representations Randomly change one element of a child solution a very small percentage of the time PATHFINDING EXAMPLE (1) Example: 2D grid Arbitrary number of boundaries 1 start point 1 finish point PATHFINDING EXAMPLE (2) Break down binary string into movements across a 2D grid. 00 = up 01 = right 10 = down 11 = left PATHFINDING EXAMPLE (3) Heuristic function: Simulate binary string movement beginning at start point Measure distance from finish (simple, Pythagorean) Fitness score = 1 – (distance / max possible distance) PATHFINDING EXAMPLE (4) 01 = Right Genome A: 01 10 01 10 01 00 01 00 10 = Down 01 = Right (Bump) 10 = Down 01 = Right 00 = Up (Bump) 01 = Right start 00 = Up Fitness = 1 - (2 / 24) finish PATHFINDING EXAMPLE (5) 00 = Up Genome B: 00 01 10 10 11 10 01 01 01 = Right 10 = Down 10 = Down 11 = Left 10 = Down 01 = Right start 01 = Right Fitness = 1 – (2 / 24) finish PATHFINDING EXAMPLE (6) This is how we take two genomes and create a new one: Genome A: 01 10 01 10 01 00 01 00 Genome B: 00 01 10 10 11 10 01 01 Genome C: 01 10 01 10 01 00 01 01 (assumes no mutation for now) PATHFINDING EXAMPLE (7) 01 = Right Genome C: 01 10 01 10 01 00 01 01 10 = Down 01 = Right (Bump) 10 = Down 01 = Right 00 = Up (Bump) 01 = Right start 01 = Right Fitness = 1 – (0 / 24) finish THINGS WE CAN TWEAK Mutation 0.01 is a reasonable starting value Crossover rate rate 0.7 or so Chromosome Varies a lot based on specific problem Population length size Try maybe 150-250 USE IN GAMES Computationally expensive, becoming easier to deal with as hardware speeds up Most of the time is run offline with the results used in a ‘black box’ fashion in the actual game Can be used to tune priorities, behaviors, parameters, etc EXAMPLES Some games run it in real time Black and White Quake 3 bot AI Used to optimize the fuzzy logic controller AI I am: 45% in favor of grabbing that rocket launcher 62% in favor of picking up the red armor 89% in favor of the Quad Damage Check out the source code (GPL)