Shannon commented on the last post, why don't we use circles instead of polygons on the generation stuff. What a fantastic idea? I swapped Ellipses for Cirlces (to leave more room for mutation) and update the tool, results:


Original


1 million generations with Polygons (approx 4 hours)


400k generations with Ellipses (approx 2.5 hours)

How cool is that? Now I'm starting to wonder what about mixing the shapes and allowing shapes to mutate between each other? What other shapes are there to reduce data, rectangles next?

What a fantastic comment and idea!

Awesome stuff kevmeister!

Awesome stuff kevmeister! :)

what about using this genetics things for some game AI? like, I don't know, a AI controlled tron racer with it's own DNA that get's better with time?

I'm not sure what the fitness function could be then tho xD

\/0!|)

What about wavelets? I might

What about wavelets? I might play with your code over Christmas and see how well they work.

Turns out that Gabor

Turns out that Gabor wavelets are way too slow. Tweaking the DnaPolygon to use some of the points as Bezier control points (via GeneralPath) produces fairly pretty results at about 1/4 the speed of polygons, but they're not as good as polygons.

I also tried breeding different strains and cross-breeding (pick two random parents; take the 1st polygon from one at random; the 2nd from one at random; etc) which is predictably slow and doesn't seem to help much.