Hello Sean,
Thanks for your message. I've *fixed* it for myself by disabling the check for
the evaluated flag at the beginning of the method. However, I do not work on
the SVN build but on the official ECJ 20 build instead. Thus, I cannot test your
fix at the moment. If I have some time, I will give it a try.
I also noticed another issue. I'm using a specific seed for the Mersenne
Twister, e.g. 4357, which I keep unchanged while tuning my configuration.
However, I noticed that although nothing of the configuration has been
changed the results differ, which should usually not be the case if all random
numbers are created by the Twister. Is there some other random function
involved in the DE-algorithms?
Thanks in advance,
Andreas
On Wed, 27 Jun 2012 14:36:58 -0400, Sean Luke <[log in to unmask]>
wrote:
>You're right, Andreas, it's a bug. It looks like the DE code was creating new
individuals by cloning them from old individuals in the population rather than
cloning the prototype. That's not a good idea for several reasons, but it
affects you in particular because the old individuals had their evaluated flag
set and so now do the new ones. I've updated the breeders on SVN, let me
know if that solves the problem.
>
>Sean
>
>On Jun 27, 2012, at 9:53 AM, Andreas Meier wrote:
>
>> I spent several hours trying to figure out why my differential evolution
>> example does not work. I think, the reason is a bug in ECJ. Usually, in
>> every evaluate-method of a problem definition I have encountered so far,
you
>> should check whether the individual has already been evaluated. If you do
>> this as well in a differential evolution example, only the first generation
>> will get evaluated. It seems that after modifying the individuals the
>> evaluated-flag is not resetted and thus, although the individuals have
>> changed, they will not get re-evaluated.
>>
>> Is this really a bug or is there some intention for doing it that way?
|