PDA

View Full Version : Evaluation Function



Scrambled Eggs
11-24-2004, 09:25 AM
I've been watching the Locked WIM project and have seen how it gets stuck at near 1 stringent self-checking and 0 parsimony and has been restarted several times. I think the problem may lie in using a lexicographical evaluation function. That is, order the results in terms of task fitness, then within task fitness by loose self-checking, etc. This type of evaluation function is often poorly behaved (no mixed derivatives, etc.).

I suggest using a continuous alternative: a * Task Fitness + b * Loose Self-Checking + c * Stringent Self-Checking + d * Parsimony where a/b, b/c, c/d >= 2. In effect, a little, say, Task Fitness, is sacrificed for lot of Parsimony in the beginning. This way, parsimonious solutions, though imperfect, have a chance of being generated. Evolution can then work to maximize the other parameters, eventually maximizing all but parsimony (that's the reason for the lower bound of 2 in the ratios.) If the final results fail the lexicographical evaluation, the evaluation function can be changed to use it. I think this approach has a better chance of finding optimal parsimonious solutions in those instances in which the lexicographical evaluation function fails.

I would not recommend this as a first resort: several problems seem to work well with lexicographical evaluation. It's those that don't that concern me. Eventually, it may be possible a priori to determine which circuits are best evolved with a continuous evaluation function, so that evolution time is minimized and project throughput maximized.

michaelgarvie
05-07-2005, 12:16 PM
Hi Scrambled,

This weighted average scheme you suggest was indeed the first attempt I had at it. The lexicographical one delivered better results. The other seemed to be encode more local optima, it seems quite hard to go from performing great self-checking but not having the right output function to performing the right output function and still perform great self-checking in one step. Specially because it is often the case that self-checking requires some kind of duplication of the original function at some level: then both would have to be fixed together.

However, as you rightly say, this does not mean that this approach may not be better for certain circuits and I do not discard the possibility of trying it out.

Have you had a look at the source code for Jaga? http://jaga.sf.net

:cheers: Miguel

Scrambled Eggs
05-09-2005, 08:39 AM
Hi Miguel,

Thanks for the answer! You do seem to have some idea of what you're doing. ;)

I don't know Java, and have no time to learn it, so looking at the source code won't do me much good.