It would work better if you did a local optimization after every crossover and ditched random mutation. I think they call it a memetic algorithm (http://en.wikipedia.org/wiki/Memetic_algorithm).
So take your every triangle vertex (x,y) and differentiate against the fitness (using finite difference), then gradient accent on that parameterization. That will let the triangles fit the edges effectively (I am thinking Mondrian here primarily)
Sorry, FF or Chrome only (because of how I load the webworkers from the same page)
@tlarkworthy - I had a version that did 12 images for each generation and chose the best - It was a better result but it really throttled the CPU and took down the browser on my weaker machine, so went with the single thread.
My "artistic" spin was I wanted to reproduce the Victory Boogie Woogie using only circles (see vbw-example.pdf and vbw-example-2.pdf in previous link).
btw, the original article about using Genetic Algorithms to derive Mona Lisa's image also generated quite a bit of interesting discussions here, 4 years ago:
This is really awesome. It took me a while but I think I found the perfect settings for "Mondrian" (but it really does take a long time)
http://i.imgur.com/OhgYn6X.png
Different images work best with different polygon sizes, different cut-offs etc. and it's really sensitive. If I change the parent cutoff for example, a simple 0.01 change seems to ruin Mondrian from forming, even after waiting several thousand mutations.
20 comments
[ 3.4 ms ] story [ 59.8 ms ] threadIt seems the default mutation parameters are a bit low, if you increase it it may lead to better results
I think the main problem with this is that it's using a fixed number of polygons, and apparently is mutating their vertice positions.
If it could be changed for a range of polygons (with a range of vertices, let's say from 3-6) maybe it can converge faster (and better)
But it is nonetheless a very nice experiment. GA/GP is one of those things that really can work with "untractable" questions.
So take your every triangle vertex (x,y) and differentiate against the fitness (using finite difference), then gradient accent on that parameterization. That will let the triangles fit the edges effectively (I am thinking Mondrian here primarily)
I recently entered a competition (February 2013) and used this technique without having seen this blog. I also used webworkers and SVG.
Source: https://github.com/binarymax/randriaan Demo: http://binarymax.com/randriaan.html
Sorry, FF or Chrome only (because of how I load the webworkers from the same page)
@tlarkworthy - I had a version that did 12 images for each generation and chose the best - It was a better result but it really throttled the CPU and took down the browser on my weaker machine, so went with the single thread.
My "artistic" spin was I wanted to reproduce the Victory Boogie Woogie using only circles (see vbw-example.pdf and vbw-example-2.pdf in previous link).
The jury was heavily biased towards algorithms that created VBWs from nothing so we didn't stand a chance :-)
https://news.ycombinator.com/item?id=389727
http://alteredqualia.com/visualization/evolve/
[1] comments: https://news.ycombinator.com/item?id=392036
http://en.wikipedia.org/wiki/Super_Mario_Land
Different images work best with different polygon sizes, different cut-offs etc. and it's really sensitive. If I change the parent cutoff for example, a simple 0.01 change seems to ruin Mondrian from forming, even after waiting several thousand mutations.
http://imgur.com/phA7Ocu
DNA here: http://pastebin.com/PEGwKvG4
I realize that that is only sort of the point (there's a lot of "cool technique demo" here).
(Or fastest-to-achieve-reasonable-result...)