[Icfp04-discuss] Evolutionary Ants
Joseph Gentle
josephg at cse.unsw.edu.au
Sun Jun 13 08:01:46 EDT 2004
Carlos Scheidegger wrote:
>>1. STarting off with an extremely simple ant (~10 lines)
>>2. Randomly either:
>> - Changing states
>> - Deleting states
>> - Adding states
>> - Merge states
>>3. Change/delete/add would affect a random number of states from 1 to 4
>>4. Merge operations would merge random chunks from two ants. This needed
>>a lot of work and is where a higher level language would be far more
>>effective.
>>
>>
>Did you use relative addressing or something? Crossover operations are
>the really important parts of a GA, because they are the ones that
>eventually recombine the good features of two different good
>individuals. Without relative addressing, I can't see crossover doing
>that at all.
>
>
>
We merged in strands of operations and then readdressed them I think -
you're right; i don't think it was all that effective.
>>5 Only 12 ants competed in each generation. 3 survived. For some reason
>>this seemed to produce smart ants *MUCH* faster than generation sizes
>>~100 (which is what I used at first).
>>
>>
>Hmm. I'd hazard a guess that this was happening because most of the GA
>operations were generating worse ants than original. Have you tried to
>check whether the population converges to one of the ants at the first
>generations? I think this may be happening, and then you end up with
>pretty much just a randomized search. Which sort of works, but you
>should just use population size = 1 then :)
>
>
Heh - probably worth a look. It was very interesting - I ran the
simulation on 3 processors and they all reached very different mean and
maximum scores (in terms of food collected) in each generation. Watching
the actual simulations however the ants definitely *did* get smarter.
Some started following ant trails left behind by ants in front. Some
started travelling vast distances before changing direction. Others just
didn't work at all.
If I were to do the problem again (strongly considering this once my uni
holidays start) I'd use/write a compiler to a higher level language then
use that for merging.
>I'd try to do the crossover by analyzing control flow of the assembly
>language and switching a contiguous block for another. Mutations would
>include changing the sense condition and direction, among other
>things. Another interesting thing would be to inject NOP operations in
>the population, to allow for variation without directly affecting ant
>individuals. Note that for that to work you'll either need to disable
>optimizers, or use higher-level languages. What this tries to do is to
>create "introns" - pieces of the genotype that are not expressed in
>the individuals. There's lots of evidence from the GP community that
>fitness is directly related to the amount of introns in the genotype -
>they serve to prevent hazardous crossovers, among other things.
>I remember reading this in Peter Bentley's "Evolutionary Design..."
>book, but I'm too lazy to pick the accurate reference right now :)
>
>
>
Heh i really should learn this stuff properly. This was the first GA
I've written and I don't know most of the theory (just read a few
websites a few years ago and talked to people about it... never properly
learnt it).
Interesting stuff! I'll have to read up on it all :]
-J
>-carlos
>
>
>
More information about the Icfp04-discuss
mailing list