Print

Print


Hi Sean,

Thanks for the advice and the explanation. In looking through the  
code, my first idea had been to extend MasterProblem and use that as  
eval.masterproblem, but my teeth did some grinding when I found out  
that the master code requires eval.masterproblem to be exactly equal  
to MasterProblem.  I could not augment the standard evil overlord with  
more evil overlordness of my own. (Shouldn't MasterProblem be a final  
class, then?)

So my next idea had been to hack MasterProblem as you suggested, but I  
really hated doing that, because then when the next ECJ version came  
out (and they've been coming out relatively fast and furious), I'd  
have to remember the changes I made. I could always stick with the  
current ECJ version, but I'm one of those upgrade addicts.

Finally, I settled on creating a custom Exchanger, that being the next  
stage after evaluation, and fix up the fitnesses in the prebreeding  
exchange phase. Not ideal, but it's the very next phase after  
evaluation, and at least it would work for future ECJ versions.

IMHO, the best thing would be to fix up MasterProblem, but I also  
didn't look at it closely enough to determine whether that would work  
under both synchronous and asynchronous evaluation. I defer to your  
far greater knowledge of the code :)

Thanks, and I look forward to hearing your verdict!

--Rob