如何在Java中实现遗传算法的高斯突变算子
我试图为我的项目学习和实现一个简单的遗传算法库。此时,进化,种群选择已经准备好了,我正在尝试为Java和Scala中的遗传进化引擎实现一个简单的好突变算子,如高斯突变算子(GMO)。
我在论文A基于多目标进化算法的帕累托排名的突变算子(P.M. Mateo,I. Alberto)第6页和第7页找到了一些关于高斯突变算子(GMO)的信息。
但是我有一些问题来查找有关如何在Java中实现此高斯突变运算符以及该运算符的其他有用变体的其他信息。我该怎么办?
我正在使用随机Java util的函数,但此方法仅返回0到1之间的随机数。random.nextGaussian()
VoI
a) 在这种情况下,如何修改返回编号的精度?(例如,我想得到一个介于0和1之间的随机双精度数,步长等于0.00001。
b)以及如何指定和用于此函数,因为我想在本地搜索我的基因组值,而不是在-1和1之间。我怎样才能围绕我的基因组价值进行本地研究?mu
sigma
经过研究,我找到了b)问题的答案。看来我可以像这样替换高斯随机数:
newGenomeValue = oldGenomeValue + (( gaussiandRndNumber * sigma ) + mean )
其中 = 我的基因组值。mean
(参见《如何生成正态分布或高斯分布的随机数?》中底页的方法。