Print

Print


Hi to all,

Well, I am already back and trying out the new ECJ version. This time
I am able to run ECJ without any errors, but it seems there is still a
problem with Uniform and Ephemeral Random Constants. In my runs,
Uniform doesn't set up the ERCs values (they are always 0 during the
run). I have checked Uniform.java, and I think the problem is that
resetNode() is not called after protoClone(), as it happens in the
other builders. I have changed this, and you can find my changed
version attached to this email. After this change it seems to be
working fine. <Uniform.java>

I have now another problem, however: Before ECJ 13, I had implemented
a Statistics class for serializing the best individuals in each
generation. With ECJ 12, I was just using a standard
ObjectOutputStream to serialize the individual to an external file,
but this doesn't seem to work with ECJ 13 anymore - now Java complains
that some classes are not serializable, and throws an exception. I
have changed my class to use the new writeGenotype(..) method instead,
but now I am getting this error message:

FATAL ERROR:
No node in the function set can be found that is equivalent to the
node ERC[d4602857950892639882|0.5198876159976902|] when performing
writeRootedTree(EvolutionState, GPType, GPFunctionSet, DataOutput).

My ERC class is just a copy of ec.app.regression.func.RegERC. Is this
a bug in ECJ or am I doing something wrong? Should I be using a
different method for writing the individual to a file?

Best regards,

Artur Matos.