I try to learn and implement a simple genetic algorithm library for my project. At this time, evolution, selection of population is ready, and I'm trying to implement a simple good mutation operator like the Gaussian mutation operator (GMO) for my genetic evolution engine in Java and Scala.
I find some information on the Gaussian mutation operator (GMO) into the paper A mutation operator based on a Pareto ranking for multi-objective evolutionary algorithms (P.M. Mateo, I. Alberto), page 6 and 7.
But I have some problem to find other information on how to implement this Gaussian mutation operator and other useful variants of this operator in Java. What should I do?
I'm using the random.nextGaussian() function of random Java util, but this method only returns a random number between 0 and 1.
So,
a) How can I modify the precision of the return number in this case? (For example, I want to get a random double number between 0 and 1 with a step equal to 0.00001.)
b) and how can I specify mu and sigma for this function, because I want to search locally about a value of my genome, not between -1 and 1. How can I adjust that local research around my genome value?
After research, I found an answer to the b) question. It seems I can displace the Gaussian random number like this:
newGenomeValue = oldGenomeValue + (( gaussiandRndNumber * sigma ) + mean )
where mean = my genome value.
(Cf. method of the bottom page in How can I generate random numbers with a normal or Gaussian distribution?.)