Pregunta

Estoy tratando de poner en práctica distribución de probabilidad no uniforme en el algoritmo genético.

En la aplicación del programa genético, tengo un experimento que tiene 3 resultados, donde cada resultado tiene diferentes probabilidades. Digamos que, probablity de uno de los resultados es de 0,85, 0,01 y otro es última es 0,14?

P.S: Hace poco llegué a saber que se llama distribución no uniforme de la probabilidad. Estoy implementación en Java, puede alguien decir la teoría detrás de prob no uniforme. distribución y también los paquetes de Java aplicación.

No dude en preguntar yo sé, si u necesidad de más información sobre el problema!

Gracias de antemano!

¿Fue útil?

Solución

Para una distribución discreta sencilla, se puede escribir un muestreador que devolverá sus resultados con la frecuencia deseada mediante el uso de las probabilidades acumuladas.

Random r = new Random();
double v = r.nextDouble();

if (v <= 0.85) { return 0; }
if (v <= 0.86) { return 1; }
return 2;

Esto devolverá los números 0, 1 y 2 con una probabilidad de 0.85, 0.01 y 0.14.

En cuanto a la teoría de las distribuciones de probabilidad no uniformes, se puede comenzar con este artículo de Wikipedia sobre distribuciones de probabilidad ; tomar nota especial de las secciones plegables en la parte inferior de la página. Usted encontrará que hay docenas de distribución no uniforme (tanto continuas y discretas) con diferentes propiedades.

Otros consejos

En su caso particular, es mejor conseguir un valor aleatorio en [0; 100) utilizando una distribución uniforme y luego comprobar lo cubre cae en: [0; 85), [85; 99), [99, 100)

Sobre la base de su descripción me parece que usted está hablando de selección proporcional de fitness (también conocida como la selección ruleta).
http://en.wikipedia.org/wiki/Roulette-wheel_selection

creo nailxx respuesta' es una descripción bastante compacta lo que tiene que hacer.

véase también Selección ruleta en Algoritmos Genéticos
ruleta selección de rueda algoritmo

Si estoy equivocado aquí hay algunas bibliotecas que pueden serle de utilidad:
http://www.ee.ucl.ac.uk/~ mflanaga / java / Stat.html
http: //commons.apache. org / matemáticas / apidocs / org / apache / Commons / matemáticas / random / package-summary.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top