pop.subpop.0.species.stdev = 0.1pop.subpop.0.species.min-gene.0 = 0pop.subpop.0.species.max-gene.0 = 100pop.subpop.0.species.stdev.0 = $(%pop.subpop.0.species.stdev*(%pop.subpop.0.species.max-gene.0 - %pop.subpop.0.species.min-gene.0))pop.subpop.0.species.min-gene.1 = 2pop.subpop.0.species.max-gene.1 = 3pop.subpop.0.species.stdev.1 = $(%pop.subpop.0.species.stdev*(%pop.subpop.0.species.max-gene.1 - %pop.subpop.0.species.min-gene.1))
It's not in the manual, it's at the top of the Javadoc for FloatVectorSpecies.On Wed, Jun 3, 2015 at 9:08 PM, Sean Luke <[log in to unmask]> wrote:I don't see in the documentation where it says that standard deviation is scaled. Could you point it out? Please use the current PDF of the manual on the SVN repository.
Sean
On Jun 3, 2015, at 5:04 PM, Eric Scott <[log in to unmask]> wrote:
> All good questions. That's why I was looking at the code -- to see how exactly "the standard deviation is scaled to reflect each gene's range."
>
> I can specify mutation-stdev's manually for each gene in my application, not a problem. I suggest that the sentence about scaling be removed from the JavaDoc, as it seems to be erroneous.
>
> Thanks!
> Siggy
>
> On Wed, Jun 3, 2015 at 3:38 PM, Sean Luke <[log in to unmask]> wrote:
> 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
>
> [or whatever]
>
> 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.
>
> Sean
>
> 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.
> >
> > Sean
> >
> > 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?
> >>
> >> Thanks,
> >> Siggy
> >>
> >> --
> >>
> >> Ph.D student in Computer Science
> >> George Mason University
> >> http://mason.gmu.edu/~escott8/
>
>
>
> --
>
> Ph.D student in Computer Science
> George Mason University
> http://mason.gmu.edu/~escott8/
--