Я пытаюсь изучить и реализовать простую библиотеку генетического алгоритма для моего проекта. В это время эволюция, выбор населения готов, и я пытаюсь реализовать простой оператор хорошей мутации, как гауссовский оператор мутации (GMO ) для моего механизма генетической эволюции в Java и Scala.
Я нахожу некоторую информацию о гауссовском операторе мутации (GMO) в статье Оператор мутации, основанный на ранжировании Парето для многоцелевых эволюционных алгоритмов (П. М. Матео, И. Альберто), стр. 6 и 7.
Но у меня есть некоторая проблема, чтобы найти другую информацию о том, как реализовать этот гауссовский оператор мутации и другие полезные варианты этого оператора в Java. Что мне делать?
Я использую функцию random.nextGaussian()
случайного использования Java, но этот метод возвращает только случайное число от 0 до 1.
Итак,
a) Как я могу изменить точность возвращаемого числа в этом случае? (Например, я хочу получить случайное двойное число между 0 и 1 с шагом, равным 0,00001.)
b) и как я могу указать mu
и sigma
для этой функции, потому что я хочу искать локально значение моего генома, а не между -1 и 1. Как я могу исправить это локальное исследование вокруг моего значение генома?
Изменить 1: После исследования я нашел ответ на вопрос b). Кажется, я могу вытеснить гауссовское случайное число следующим образом:
newGenomeValue = oldGenomeValue + (( gaussiandRndNumber * sigma ) + mean )
где mean
= мое значение генома.
(метод нижней страницы в Как я могу генерировать случайные числа с нормальным или гауссовским распределением?.