Print

Print


On Oct 7, 2007, at 7:17 PM, Matthew Walker wrote:

> Martin V. wrote:
>> Even if I change the seed to the computer time (instead of default  
>> 4357) and change the number of generations from 51 to 100 it  
>> doesn't help - the program still finds only about 70 pieces of food.
>> In the literature the evolution should end already in generation  
>> 21 where it should find an ideal individual which eats all 89 pieces.
>>
> From my experience the artificial ant has about a 10--20% chance of  
> success.  Steffen Christensen's thesis has a very large number of  
> runs of the artificial ant.  You could check out his results if  
> you're interested in what performance to expect.  But have you  
> tried more than a few runs?  You might like to try perhaps 100  
> runs---in which case you could expect 10 to 20 runs to succeed if  
> you use parameters similar to Koza's.
>
> Another issue that you should consider is the number of timesteps  
> available.  Using Open Beagle I found that 600 (rather than the  
> specified 400) timesteps were required for Koza's ideal solution to  
> succeed.  Christensen and Oppacher (2002) also noted this issue.   
> I'm not sure how many ECJ uses by default, but this could certainly  
> be the root-cause if Koza's "100%-correct" solution isn't working.

I've been told that Koza may have been using 600 and that the stated  
400 is a misprint.  ECJ has 400 by default because the huge majority  
of the literature uses 400 as its baseline.

As to whether or not ECJ can find the answer for the 400, try:

	java ec.Evolve -file ant.params -p seed.0=2
	java ec.Evolve -file ant.params -p seed.0=9
	java ec.Evolve -file ant.params -p seed.0=15
	java ec.Evolve -file ant.params -p seed.0=26

That's out of the first 30.  Or about 13%.

There are lots of ways of course to improve matters: chief among them  
being parsimony pressure.  Out of interest, I ran the first thirty  
with 600 moves rather than 400, and got twice the success rate  
(27%).  Here were the successes:

	java ec.Evolve -file ant.params -p eval.problem.moves=600 -p seed.0=5
	java ec.Evolve -file ant.params -p eval.problem.moves=600 -p seed.0=6
	java ec.Evolve -file ant.params -p eval.problem.moves=600 -p seed.0=11
	java ec.Evolve -file ant.params -p eval.problem.moves=600 -p seed.0=16
	java ec.Evolve -file ant.params -p eval.problem.moves=600 -p seed.0=20
	java ec.Evolve -file ant.params -p eval.problem.moves=600 -p seed.0=21
	java ec.Evolve -file ant.params -p eval.problem.moves=600 -p seed.0=25
	java ec.Evolve -file ant.params -p eval.problem.moves=600 -p seed.0=27

Sean