我尝试为我的项目学习和实现一个简单的遗传算法库。在这个时候,进化,人口选择已经准备好了,我正试图在Java和Scala中为我的遗传进化引擎实现一个简单的好突变算子,如Gaussian mutation operator(GMO)。如何在Java中实现遗传算法的高斯变异算子
我发现高斯变异算(GMO)的一些信息进纸A mutation operator based on a Pareto ranking for multi-objective evolutionary algorithms(PM刁,一阿尔贝托),第6页和7
但我有一些问题,以找到如何等信息在Java中实现此运算符的高斯变异运算符和其他有用的变体。我该怎么办?
我使用随机的Java UTIL的random.nextGaussian()
功能,但这种方法只返回一个随机数
0和1之间所以,
一)我怎样才能修改返回的精度在这种情况下的数字? (例如,我想获得一个0到1之间的随机双数,步长等于0.00001。)
b)以及如何为此函数指定mu
和sigma
,因为我想在本地搜索一个值我的基因组,而不是-1和1之间。我怎样才能调整我的基因组价值的地方研究?
编辑1:经过研究,我找到了b)问题的答案。看来我可以取代这样的高斯随机数:
newGenomeValue = oldGenomeValue + ((gaussiandRndNumber * sigma) + mean)
其中mean
=我的基因组值。
(参看在How can I generate random numbers with a normal or Gaussian distribution?底页的方法)
究竟你“的回归数的精确度”是什么意思? – NPE 2011-06-08 10:13:19
逗号后的数字的数字:http://en.wikipedia.org/wiki/Double_precision_floating-point_format – reyman64 2011-06-08 10:36:07
用什么方式来“修改”“逗号后的数字的数字”? 'nextGaussian'给你一个'double'。你是说这不足以满足你的需求吗? – NPE 2011-06-08 10:38:33