我尝试使用二进制矩阵初始化我的初始种群。为了增加种群的多样性,每个染色体的1's
数量范围从2到5。
然而,我获得的初始人口缺乏多样性。我的人口规模是100,但其中97人中有5人1's
。以下是我在R中的实现,使用GA包:
library(GA)
set.seed(1)
initial_population <- function(object) {
## generating a 10 x 10 matrix (population)
init <- t(replicate(object@popSize, {i <- sample(2:5, 1); sample(c(rep(1, i), rep(0, object@nBits - i)))}))
return(init)
}
g2<- ga(type = "binary",
population = initial_population,
fitness = DBI2,
selection = ga_rwSelection,
## intentionally disable crossover and mutation for testing
pcrossover = 0,
pmutation = 0,
## popSize is small to illustrate my problem
popSize = 10,
nBits = 10)
检查初始种群g2@population
,染色体似乎是相同的。
我的代码中有错误吗?或者是否有更好的替代方案来产生多样化的人口?