我尝试使用二进制矩阵初始化我的初始种群。为了增加种群的多样性,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
,染色体似乎是相同的。
我的代码有错误吗?还是有更好的选择来产生多样化的人口?