Pacman as an evolving organism A 2D world of moving “animals” ala Pacman eating “plants”. Graphically represented Different zoom levels Run status Extra info Torus topology (no boundaries) Size of the world Initial population Max attainable energy per grown plant Value of growing plants (vs grown) One metabolic parameter Graphic, background or analysis mode Loading of previous run Switching on or off evolution (mutation) 2 variants Growing – dark green, will turn into a grown plant after a given time Grown – green, can seed growing plants into unoccupied neighbor areas. Eaten by the “animals”, who can focus their digestion on either grown or growing plants Moves about in the world. Eat plants Can multiply Has a number of characteristics attached to them 1) Phenotype 2) Fixed status (ID, birth time, death time, parent) 3) Dynamic states: energy, location, direction of movement, activity, age Mutations directly on the phenotype (genotype=phenotype). Almost no pleiotropy (Diagonal G matrix) Physiological parameters Speed Turning speed Sense of touch Behavioral parameters Coloration (neutral) Probability of going straight, Size/mass turning left, turning right or sitting down and trying to eat Probability of eating growing and grown plants (conditioned on touch) Probability of using memory to start in the same direction as one stopped. Reproduction parameters Energy level for reproduction (*mass) Mutation rate Sensory parameter Metabolic parameters Specialization for eating grown or growing plants. Mass Energy is consumed by Creature maintenance (proportional to mass) Movement Proportional to mass*speed2 Starting after having stopped costs more than just maintaining a speed. Reproducing Parent looses energy proportional to its mass, then splits the energy in half between it and its child. Energy≤0 means death. Energy is gained by eating plants (either stopping randomly and trying to eat, or by sensing a plant and deciding to stop). Digestion is divided into that for grown plants, Do, growing plants, Dg, and unused digestive capabilities (Du=1-Do-Dg). Eating grown plants yields energy Eo=Dob-constant (b is a metabolic run parameter). Eating grown plants yields energy Eg=Dgb-constant. Phenotypes for which I know in which direction they should go, actually do go that way. Sense of touch as a function of time Unused digestion (x-axis) as a function of time. Coloration indicates probability of eating a growing plant, if you can feel it. r The energy limit for reproduction has increases as a function of time, here. Without evolution (no variation for selection to act on): Size of population With evolution: Size of population Digest grown phenotype (Simulation run for 8 times the time as for no evolution, and still no extinction for two simulations) Extinction Looks like specialization on digesting grown plants is preferred: But then the animals “change their minds”: If we start with the same run conditions and the same animals, we don’t get exactly the same evolutionary trajectory. Digest grown, two runs Number of animals, two runs time While we may see evolution in the changing mean, the variance may also be changing: The division into growing and grown plants was an easy extension to allow for speciation. Speciation only seen for one run with extremely fine-tuned digestion setup and a huge world. With contingency and (pseudo)randomness, there’s always a chance that the population will dwindle and disappear. #animals Eventually all such populations will go extinct. However, that doesn’t need to happen in a ludicrously long time. time (a huge amount of it) Histogram of number of animals for nonevolving population given a little more energy per plant. If I pump too much energy into each plant (or increase the hunting efficiency) then extinction by over-grazing becomes a near certainty. Same run parameters, but world area x100: Large world, mutations switched on: It might look like the population size is getting more noisy with time… #animals time But it’s really predator-prey cycles. With evolution switched off, the population would crash, or with slightly higher energy levels, stabilize. Lotka-Volterra: cHL (H ) )dt + σ H HdBt dH = (aH H − bH H + d+H kcHL ( L) dL = (−aL L + )dt + σ L LdBt d+H With low k and c, the Advantage of deterministic catching each prey Catchment efficiency (without noise) system will stabilize #animals to a single value. 2 With stochasticity, the process will nevertheless reach a stable distribution. time In the start, the system remains deterministically stable, but quickly becomes stochastically cyclic. After a while, cycles even without noise. Cycles become more and more extreme. Population under considerable extinction risk. #animals time #animals #animals time time It’s entirely possible for a species to adapt itself to #animals death! * For a particular run option, a non-evolving system seem to work stably. The corresponding evolving system develops gradually more extreme predator-prey-cycles until the plants are wiped out. The animals then starve to death. time (a huge amount of it) #animals, #plants * Colleen Webb (2005): A Complete Classification of Darwinian Extinction in Ecological Interactions, The American Naturalist 161(2), DOI: 10.1086/345858 time Poor starting phenotype (low sense of touch/digestive capabilities) means either immediate extinction due to inefficiency (low plant energy) or later Darwinian extinction (high plant energy). Can’t start off with having too much evolutionary potential, that is. Darwinian extinction seems somewhat softened by world size. Did 15 runs with under the same run conditions. A histogram of time to system crash shows stochasticity. Not an exponential distribution, though. Phenotype at end also varies a little (about 7% for important phenotypic characters). For some runs, the phenotype was almost stable for a long time before the crash. => You don’t get a specific phenotype, then die. You get near a specific phenotype and then come under increasing risk. Survival curve suggesting increasing hazard (risk). 3 of the 15 runs ended with a green world. tend Suggests constant hazard for nonevolving organisms. Decreasing hazard for young to moderately old. Increasing hazard for really old organisms? (Surviving until evolution catches up to them?) Source code can be found in my library named hydrasub: http://folk.uio.no/trondr/hydrasub For Linux (64 bit RedHat) users at CEES, the exectuable is found at ~trondr/prog/evol12 Presentation: http://folk.uio.no/trondr/pacman_evol/