Как реализовать оператор мутации Гаусса для генетического алгоритма на Java

Я пытаюсь изучить и реализовать простую библиотеку генетических алгоритмов для своего проекта. На данный момент эволюция, отбор популяции готовы, и я пытаюсь реализовать простой хороший оператор мутации, такой как оператор мутации Гаусса (GMO), для моего механизма генетической эволюции на Java и Scala.

] Я нахожу некоторую информацию о гауссовском операторе мутации (GMO) в статье Оператор мутации, основанный на рейтинге Парето для многоцелевых эволюционных алгоритмов (PM Mateo, I. Alberto), страницы 6 и 7.

Но у меня есть проблема с поиском другой информации о том, как реализовать этот оператор мутации Гаусса и другие полезные варианты этого оператора в Java. Что мне делать?

Я использую функцию random.nextGaussian () случайной утилиты Java, но этот метод возвращает только случайное число от 0 до 1.

Итак,

] а) Как я могу изменить точность возвращаемого числа в этом случае? (Например, я хочу получить случайное двойное число от 0 до 1 с шагом, равным 0,00001.)

b) и как мне указать mu и sigma для этого функция, потому что я хочу искать локально значение моего генома, а не между -1 и 1. Как я могу скорректировать это локальное исследование вокруг значения моего генома?

После исследования я нашел ответ на вопрос б). Кажется, я могу заменить гауссово случайное число следующим образом:

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

где означает = значение моего генома.

(См. Метод нижней страницы в Как я могу генерировать случайные числа с помощью нормальное или гауссово распределение? .)

13
задан Robert Harvey 12 April 2018 в 15:15
поделиться