No, wait, it's *not* a bug. ECJ's stdev is not scaled to fit in bounds. You'd have to say:
>> pop.subpop.0.species.mutation-stdev.0 = 0.0001
I understand your intuition here, but stdev is a fixed quantity. Imagine if someone had the stdev set and then they needed to change the min/max gene, and found that the stdev magically changed as well. And if it were a relative quantity, what min/max width range would it be relative *to*?
Maybe I might be able to add some parameter like mutation-rstdev which sets the stdev on a per-gene basis based on the min and max genes. But you'd need to give me exactly what it should be relative to and how you think it should be scaled.
On Jun 3, 2015, at 8:16 AM, Sean Luke <[log in to unmask]> wrote:
> Then that must be a bug. I can look into it, but if you want to beat me to it, you might check out FloatVectorSpecies.
> On Jun 3, 2015, at 4:20 AM, Eric Scott <[log in to unmask]> wrote:
>> Dear Wizards,
>> The JavaDoc for FloatVectorSpecies claims that when using Guassian mutation, "if the gene-by-gene range is used, than the standard deviation is scaled to reflect each gene's range."
>> As far as I can tell, however, this doesn't actually happen. Stepping through the debugger with the following mutation parameters, I can watch DoubleVectorIndividual.gaussianMutation() as it samples from a std of 0.1 when mutation gene 0. I would have expected it to scale the std to be 0.0001 or such.
>> pop.subpop.0.species.min-gene = -1.0
>> pop.subpop.0.species.max-gene = 1.0
>> pop.subpop.0.species.min-gene.0 = -.001
>> pop.subpop.0.species.max-gene.0 = .001
>> pop.subpop.0.species.mutation-type = gauss
>> pop.subpop.0.species.mutation-stdev = 0.1
>> pop.subpop.0.species.mutation-bounded = true
>> pop.subpop.0.species.mutation-prob = 0.03
>> Is this an error in the documentation? Or am I missing something?
>> Ph.D student in Computer Science
>> George Mason University