Domanda

Sto cercando di implementare distribuzione di probabilità non uniforme in algoritmo genetico.

Per l'attuazione del programma genetico, ho un esperimento che ha 3 risultati, in cui ogni risultato ha diverse probabilità. Diciamo, probablity di un risultato è 0,85, altro è 0.01 e ultimo è 0.14?

P.S: ho recentemente venuto a sapere che si chiama non uniforme distribuzione di probabilità. Sto attuazione in Java, qualcuno può dire la teoria che sta dietro prob non uniforme. distribuzione e anche tutti i pacchetti Java attuazione.

Non esitate a chiedere sapere, se u bisogno di ulteriori informazioni sul problema!

Grazie in anticipo!

È stato utile?

Soluzione

Per una semplice distribuzione discreta, è possibile scrivere un campionatore che restituirà i vostri risultati con la frequenza desiderata utilizzando le probabilità cumulative.

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

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

Ciò restituirà i numeri 0, 1 e 2 con una probabilità di 0,85, 0,01 e 0,14.

Per quanto riguarda la teoria su distribuzioni di probabilità non uniformi, si può iniziare con questo articolo di Wikipedia su distribuzioni di probabilità ; prendere nota in particolare delle sezioni comprimibili in fondo alla pagina. Troverete che ci sono decine di distribuzione non uniforme (sia continui e discreti) con proprietà diverse.

Altri suggerimenti

Nel tuo caso particolare, è meglio per ottenere un valore casuale in [0; 100) utilizzando una distribuzione uniforme e quindi controllare ciò varia cade in: [0; 85), [85; 99), [99, 100)

Sulla base della sua descrizione mi sembra che si sta parlando di selezione proporzionati idoneità (noto anche come selezione ruota della roulette).
http://en.wikipedia.org/wiki/Roulette-wheel_selection

Credo nailxx risposta' è una bella descrizione compatta che cosa dovete fare.

vedi anche Selezione Roulette in algoritmi genetici
Roulette selezione ruota algoritmo

Se mi sbaglio qui ci sono alcune librerie che si possono trovare utili:
http://www.ee.ucl.ac.uk/~ mflanaga / java / Stat.html
http: //commons.apache. org / math / apidocs / org / apache / comuni / math / random / package-summary.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top