1

我尝试使用二进制矩阵初始化我的初始种群。为了增加种群的多样性,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,染色体似乎是相同的。

显示所有相同染色体的初始种群

我的代码有错误吗?还是有更好的选择来产生多样化的人口?

4

0 回答 0