Yes, using a human to assess the fitness function sounds good - I forgot about that idea from before. There was even an article from Slashdot about a website with an applet that evolved a function to create pictures that people thought looked 'good'. Same principle here. And yep, we can discover unseen shapes!
The only problem is that if we ever find it, the math could quite easily cover a few pages if we let this thing run havoc!
Heh, yep. Also like this:
http://img383.imageshack.us/img383/893/sphereflake02hd3.jpgI'm not sure exactly what you mean by the Mandalisk, but it sounds like you are pursuing the 3d Mandelbrot?
Yep, just another name for it, since Mandelbulb has been used up already
I'll have to create an artist's impression of what I think a zoom-in will look like sometime. It'll be 10x weirder than one can imagine though.
However, I guess the only true fittness function that will work will be the actual human perception. And that's hard for several reasons:
- Highly subjective
We'll be looking out for anything resembling spheres surrounding spheres and recursive definitions thereof. Maybe a 3D cardioid too.
limited to 2D projections/cutthroughs,
Well, a light-sourced 3D shaded render will give a pretty good idea of what it should look like. No real need for cutthroughs imo, though that could help I guess in the assessment.
- even if you only go for the overall shape: It's SlOOOOW and tedious.
Not with a GPU
(The human perception fittness curve algorithm will not be exponential, but the slow, semi-chemical computing implementation will make it look like that.)
I'm unsure how many generations would be required to make it look good. So yeah, there's a chance that we still may need to define a fitness function for speed.
Then, you basically rank the outputs without even knowing, which the fitness function had chosen. And based on that, it tries to become more and more confident with its picks. After some time (maybe some tenthousand images or so), it will be nearly confident enough to make its own picks.
So that's essentially evolving the fitness function I think...
Doing it first for a 2D set will be crucial, I guess, to at least be able to hope for any sign of covergence
Yes using the 2D Mandelbrot as a testing ground would be helpful. We'd start out with nothing, or maybe with the Mandelbrot template but without the rotation function, and work from there.
I was actually thinking of only evolving the rotation function for when we try to evolve the Mandalisk (so the rest of the Mandelbrot-esque code is already in place).
So basically a fitnessfunction that is you, which controlls a fitnessfunction that changes itself based on genetic algoritms, which then controls the actual fractal/approximation of a fractal.
Grand
That itself could be recursive, a fitness function which helps define a fitness function which controls a fitness function etc. (head explodes).