Intento aprender e implementar una biblioteca de algoritmo genético simple para mi proyecto. En este momento, la evolución, la selección de población está lista, y estoy tratando de implementar un buen operador de mutación simple como el Gaussian mutation operator (GMO) para mi motor de evolución genética en Java y Scala.Cómo implementar el operador de mutación gaussiana para un algoritmo genético en Java
encuentro alguna información sobre el operador de mutación de Gauss (OGM) en el papel A mutation operator based on a Pareto ranking for multi-objective evolutionary algorithms (PM Mateo, Alberto I.), página 6 y 7.
pero tengo algunos problemas para encontrar otra información sobre cómo para implementar este operador de mutación gaussiana y otras variantes útiles de este operador en Java. ¿Que debería hacer?
estoy usando la función random.nextGaussian()
de Util de Java al azar, pero este método sólo devuelve un número aleatorio entre 0 y 1.
Así,
a) ¿Cómo puedo modificar la precisión de la devolución número en este caso? (Por ejemplo, quiero conseguir un número doble aleatorio entre 0 y 1 con paso igual a 0,00001.)
b) y cómo puedo especificar mu
y sigma
para esta función, porque quiero buscar localmente alrededor de un valor de mi genoma, no entre -1 y 1. ¿Cómo puedo ajustar esa investigación local en torno al valor de mi genoma?
Editar 1: Después de investigar, encontré una respuesta para la pregunta b). Parece que puedo desplazar el número aleatorio gaussiano como esto:
newGenomeValue = oldGenomeValue + ((gaussiandRndNumber * sigma) + mean)
donde mean
= valor de mi genoma.
(. Método Cfr del pie de página en How can I generate random numbers with a normal or Gaussian distribution?)
¿Qué es exactamente lo que quiere decir con "precisión del número de retorno"? – NPE
Los números del número después de la coma: http://en.wikipedia.org/wiki/Double_precision_floating-point_format – reyman64
¿De qué manera desea "modificar" "los números del número después de la coma"? 'nextGaussian' te da un' doble'. ¿Estás diciendo que eso no es suficiente para tus necesidades? – NPE