A series of failed and partially successful fitness functions for evolving spiking neural networks

One of the "black arts" of evolutionary computation is the design of effective fitness functions. For some tasks the appropriate function is easy to identify, but many times the "obvious" approach induces unforeseen failures of the evolutionary process to discover genomes with the desired properties. We present a series of fitness functions we have tried on the task of evolving spiking neural networks. The paradigm is to compare the output spike trains produced by evolving networks to provided target spike trains. The initial attempts failed dramatically, and subsequent versions revealed new failure modes until the third version which seems to be yielding better performance. We close with some speculations on possible limitations to this approach.