Wie implementieren Sie das Gauß-mutation-operator für einen genetischen Algorithmus in Java

Ich versuche zu lernen und zu implementieren eine einfache genetische Algorithmus-Bibliothek für mein Projekt. Zu dieser Zeit, evolution, Selektion der Bevölkerung ist bereit, und ich bin versucht zu implementieren, die eine einfache gut-mutation-operator wie der Gauß-mutation-operator (GVO) für meine genetische evolution engine in Java und Scala.

Ich einige Informationen, die auf Gauß-mutation-operator (GVO) in die Papier Eine mutation-operator, basierend auf ein Pareto-ranking für multi-objective evolutionäre algorithmen (P. M. Mateo, D. Alberto), Seite 6 und 7.

Aber ich habe einige problem zu finden, weitere Informationen zur Implementierung diese GAUSS-mutation-operator und andere nützliche Varianten dieses operators in Java. Was soll ich tun?

Ich bin mit der random.nextGaussian() Funktion random Java util, aber diese Methode gibt nur eine Zufallszahl zwischen 0 und 1.

So,

a) Wie kann ich ändern, die Präzision der Zahl zurück, die in diesem Fall? (Zum Beispiel, ich möchte eine zufällige double-Zahl zwischen 0 und 1 mit Schritt gleich 0.00001.)

b) und wie kann ich angeben mu und sigma für diese Funktion, denn ich möchte Suche lokal über den Wert meines Genoms, nicht zwischen -1 und 1. Wie kann ich gerecht, die lokale Forschung rund um mein Genom Wert?

Nach Forschung, ich fand die Antwort für b) in Frage. Es scheint, ich kann verdrängen die Gaußsche Zufallszahl wie diese:

 newGenomeValue = oldGenomeValue + (( gaussiandRndNumber * sigma ) + mean )

wo mean = mein-Genom-Wert.

(Vgl. Methode der unteren Seite in Wie kann ich das generieren von Zufallszahlen, die mit einer normal-oder Gauß-Verteilung?.)

  • Was genau meinst du mit "die Präzision der Zahl zurück"?
  • Die zahlen, die der Zahl nach dem Komma : en.wikipedia.org/wiki/Double_precision_floating-point_format
  • In welcher Weise wollen Sie "ändern" "die zahlen der Reihe nach durch Komma"? nextGaussian gibt Ihnen eine double. Sie sagen, das ist nicht genug für Ihre Bedürfnisse?
  • Ich bin mit dieser Zahl zu Kalibrieren Wahrscheinlichkeit Recht in meiner simulation. Ich brauche eine Zahl zwischen 0,01 und 0.00000001, also, wenn ich ein Doppel mit nur einer Zahl Präzision nach Koma (zum Beispiel 0.11111 0.255525 0.114182 etc. ), ist es problematisch, weil ich muss hinzufügen von zufälligen Zahl wie diese : 0.001, 0.001252, 0,000352, etc.
  • Ihr Kommentar enthält eigentlich alles, was Sie brauchen. Die z, z_k, z_k' aus, dass das Papier sind alle 0-mean, stddev 1 Zufallsvariablen (wie man aus nextGaussian()) und Sie einfach skalieren müssen Sie in der gleichen Weise, wie Sie in dem Papier (d.h., meine x_k, stddev von sigma_k für den x_k und exp(tau ' Z+tauz_k) für die multiplikative update zu sigma.
  • Ich weiß nicht, ob OP Hinzugefügt tag von AI für ein GA Frage (oder ein Redakteur), aber GAs sind nicht Künstliche Intelligenz, es sei denn, als in den meisten banalen Sinn.

InformationsquelleAutor reyman64 | 2011-06-08
Schreibe einen Kommentar