THE DEVELOPER SPENT ALL TODAY IMPLEMENTING A SHADER FOR A VISUAL EFFECT AND WHEN IT WAS DONE IT TURNED OUT TO LOOK EXTREMELY BORING SO IN A FIT OF PIQUE SHE ADDED ONE ROUND() CALL AND ALL OF A SUDDEN IT LOOKED AWESOME
seen from Italy
seen from Algeria

seen from T1
seen from Australia

seen from Russia

seen from T1

seen from T1

seen from Singapore

seen from Japan
seen from United States

seen from Singapore

seen from Uruguay
seen from Finland
seen from Russia
seen from Japan

seen from Finland

seen from T1
seen from United States

seen from United Kingdom

seen from United Kingdom
THE DEVELOPER SPENT ALL TODAY IMPLEMENTING A SHADER FOR A VISUAL EFFECT AND WHEN IT WAS DONE IT TURNED OUT TO LOOK EXTREMELY BORING SO IN A FIT OF PIQUE SHE ADDED ONE ROUND() CALL AND ALL OF A SUDDEN IT LOOKED AWESOME
Pokemon evolution(ary algorithm)!
For some details on the algorithm and implementation, see below ^^
Once upon a time I saw some images generated with basic shapes that tried to approximate some given image. Because I like the style, I made something like that myself. Problem was: There aren’t many good libraries to perform drawing shapes that also handled transparency and per-pixel operations. Coding all of that myself was too much work, so I used the easiest solution: JavaScript. Problem was... JavaScript is slow. Drawing a few hundred triangles and then comparing the resulting image to another given image was a lot of work, even using multiple workers to distribute it. I got maybe 5-10 images per second that way. The algorithm I use is pretty simple but slow... so it took hours for at least some reasonable results.
A few days ago I decided to revisit this thing with the help of my trusty GPU. Basically I redid everything so it runs completely on the GPU. I now have about 600 images per second!
Here you can see some of my most liked pokemon :)
Following are some more details on how it works:
Acquired Intelligence & Adaptive Behaviour Week 3 - 3
Overview
1. What is evolution
2. Evolutionary Algorithms
3. Related terminology and concepts
- Fitness function
- Genotype and phenotype
4. Artificial Evolution vs Design
5. Examples
*References
- blog
- An Introduction to Genetic Algoirthms - Melanie Mitchell
1. Evolution
- For evolution to occur, you need a population of individuals that:
- has variation
- undergoes selection
- reproduces with heredity
1) Artificial Evolution
The main idea of artificail evolution is to simulate the imortant parts of evolution, to 'harness the creative power of evolution'. To get the computer to build such things, we have to build things beyond design. -> Intelligent behaviour rather than intelligent solutions
2) Evolution -> Evolutionary Algorithm
- In natural evolution, the accumulation of beneficial mutations can reproduce better adapted organisms.
- An evolutionary algorithm (EA), also known as a genetic algorithm (GA) is an attempt to capture this 'improvement of a system' that is the result of natural evolution.
3) Evolutionary Algorithm
- Simulates a population of 'individuals' that:
- reproduce with heritability
- are mutated to produce variation
- are selected on some measure of fitness
*Example:
- Evolution (directed accumulatio nof blind variation) is quite different form rational desgin.
- Human desgin tends to break systems down into components. These are themselves then broken down into subcomponents etc., until basic components are understood. (e.g. modern aeroplane or space craft design)
(1) Advantages
- They introduce different biases than those in place in typical human design.
- Allow us to consider alternative ways to 'solved a problem', other than how a human might have.
- Can be used to automate design:
- Engine design
- Scheduling problems
- Container load optimisation
(2) Different Biases
- Unlike typical human design, GAs are not biased against 'cheap tricks' - i.e. non-intuitive short-cuts to solving problems for hierarchical desgin.
- But they have their own biases.
- There must be an evolutioanry path to any solution given by a GA. (Consider how a bacterium could not evolve in one step (generation) into an elephant.)
- The biases of GAs are not easy to identify. They are influenced by how the genotype is related to the phenotype, how mutation takes place - lots of different, subtle things.
*Engine Design example:
(3) Genotype / Phenotype
- Genotype: the genetic materail, passed down from one generation to the next the order of the nucleotide on DNA, e.g. AGGCACATT...
- Phenotype: what undergoes selection, 'what the genotype codes for'. Typically the body and the brain in artificial evolution.
(a) In Engineering
- Genotype: (the encoding of the information) the angle of each aerofoil. E.g. g0 = [a1 a2 a3 a4 ... a8]
- Phenotype: (what the information encodes) the shape of the wing
(4) Fitness
- In the natural world, the fitness of an organism is determined by many complex interacting factors: predator, prey coevolution, sexual selection, competition with ocnspecifics, luck, etc.
- But evolution =/= evolutionary algorithms. In GAs, there is often a clearly deifned 'fitness function' guidign evolution towards a predetermined objective.
*Fitness in the aerofoil model is the amount of drag on the wing due the airflow.
(5) Evolutionary Strategy
*pseudo code:
عندما يتحدث الناس عن علوم الكمبيوتر, هذه الأيام ، فإنهم يتحدثون عن شيء أكثر تحديدًا، مثل العمليات التي تغذي أخبار, وسائل التواصل الاجتماعي لدينا.. فهل هذا كل ما نستفيد منها...
ماهي علوم الكمبيوتر و الخوارزمية التطورية ؟ - تحت المجهر
I created my own version of Nicolas Tollervey’s ‘wordolution’ algorithm. This is an evolutionary algorithm which evolves words.
Starting with sets of randomly chosen letters, the algorithm selects the sets which are most like the ‘target species’ - the word you want the algorithm to produce. This way, over each generation, the sets of letters evolve into the target species. Then the algorithm stops and displays how many generations it took to get there.
I made this to get some first-hand experience at creating evolutionary algorithms. Although I didn’t use any of his code, Nicolas Tollervey came up with the concept (as far as I know), and I want to thank him for sharing it. I learned about the algorithm through this video: https://www.youtube.com/watch?v=OTHggyZAot0&index=2&list=LLiuzGi3LUDOAoHErlcdHFYw&t=1891s
Evolving sequences
In the early 1990s, both Karl Sims and William Latham (with Stephen Todd) followed in the footsteps of scientist Richard Dawkins by combining evolutionary techniques and computer graphics to create artistic images of great complexity [...]. In the succeeding decades, a generation of artists/researchers have recombined, modified and extended these techniques, beginning the exploration of possible applications of evolution to aesthetic design. (3)
Lewis M. 2008. Evolutionary Visual Art and Design, in J. Romero & Machado P. (ed.) The Art of Artificial Evolution: 3-37. Berlin: Springer.