- Just a quick update on the meta-neat / parameter search work I've been

doing.

I've had a working version for about a week now and have just started

experimenting with the XOR domain. One concern I've had with SharpNEAT

so far is that it takes far more generations to solve XOR (on average)

when compared to the figures reported by others. Therefore I wanted to

see if this could be attributed to a poor choice of parameters on my

part or whether it might be something more fundamental.

So far I have found a set of parameters that find a solution about twice

as fast as before. So the # of gens required has gone from about 280 to

about 150. This is still high compared to other's reports, but it does

demonstrate that the meta-algorithm is working to some degree.

I have also wrapped up the meta-algorithm work in a rudimentary GUI that

can be used to track progress, select which parameters you wish to

search and define a seed NeatParameters object that acts as the starting

point for the search.

To keep it simple I have so far only searched on one parameter at a

time, the theory being that with such a simple search space I can keep

the population size low - thus keeping duration of searches down. Some

parameters can also effect evaluation duration a lot, so I have avoided

these so far.

So basically it's so far so good. I don't expect the parameters that are

found for XOR to be applicable to most other problems, since XOR is an

artificially small and simple problem to solve, but it will still be

interesting to see how much certain parameters effect a search. So far I

have found that the rate of asexual reproduction works best at about 90%

(50/50 before), and that the weight range is best at +-7.5 (+-5 before)

this latter figure also effects the range of values used when creating

new connections and also the initial population, therefore by increasing

the range while keepig the same activation function, the function has

effectively been steepened towards being a step function.

Colin. > Quick update. I have just got the average number of gens to find a

For my DelphiNEAT implementation, it takes about 16,45 generations to find

> solution for XOR down to about 40, which is a nice result and also

> means

> I won't have to spend the next fortnight searching for bugs :) On that

> note I think I'll call it a day.

a perfect solution (just ran it, averaged over 100 iterations, popsize=150).

But your discussion brought back memories of things that went wrong with

my initial XOR - my fitness function wasn't identical to Kens; make sure

that your fitness function is 100% identical to his!

Speficically, each the error for each test is specified as the difference

between the correct value (0 or 1) and the the NEAT value [0..1]. But NOT

if the NEAT value evaluates to the same binary value as the correct value,

then the error is 0!

If correct=1 and NEAT = 0.2, Error=0.3

If correct=1 and NEAT = 0.49, Error=0.51

If correct=1 and NEAT = 0.51, Error=0 (!!)

If correct=1 and NEAT = 0.75, Error=0 (!!)

If correct=1 and NEAT = 1.0, Error=0 (!!)

I had this error and it really hurt my evaluations, and that's because

NEAT keeps spending time trying to improve (reduce error of) bit tests

that are allready evaluating to the correct binary value.

Also make sure that you're not simply summing "hits"/"misses", but instead

actual error sums. Because evolution needs a gradient to follow, and

discrret fitness levels are hard to find a way across.

cheers,

mattias