我嘗試爲我的項目學習和實現一個簡單的遺傳算法庫。在這個時候,進化,人口選擇已經準備好了,我正試圖在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