我需要使用包' GA'创建一种允许改进一种搜索算法的超参数的遗传算法。 问题是:
代码在这里:
popSize = 150
maxiter = 10
run = maxiter
pcrossover = 0.8
pmutation = 0.1
elitism = max(1, round(popSize*0.05))
Rastrigin <- function(x1, x2, x3, x4, x5, x6, x7) {
if (x6 <= 0.5) {
if (x7 <= 0.5) {
print("1")
-(x1+x2+x3+x4+x5+x6+x7) * 2
} else {
print("2")
-(x1+x2+x3+x4+x5+x6+x7) * 2 / 4
}
} else {
if (x7 <= 0.5) {
print("3")
-(x1+x2+x3+x4+x5+x6+x7) * 4
} else {
print("4")
-(x1+x2+x3+x4+x5+x6+x7) * 4 / 4
}
}
}
GA <- ga(type = "real-valued",
fitness = function(x) Rastrigin(x[1], x[2], x[3], x[4], as.integer(x[5]), x[6], x[7]),
min = c(0, 0, 0, 0, 0, 0, 0), max = c(1, 1, 1, 10, 1000, 1, 1),
popSize = popSize, maxiter = maxiter, run = run,
pcrossover = pcrossover, pmutation = pmutation, elitism = elitism,
optim = FALSE,
selection = gareal_tourSelection,
population = gareal_Population,
crossover = gareal_blxCrossover,
mutation = gareal_rsMutation
)
对不起,这是我的第一篇文章。我希望我能理解。
非常感谢你的帮助,
马克西姆
答案 0 :(得分:0)
回答第一个问题。您似乎不希望“整数”值,而是“二进制”值(0或1)。为此,您需要将参数“ type”指定为“ binary”。在这种情况下,您还需要将参数“ nBits”设置为您想要的值数。 此包装有一个非常好的装饰图案:https://luca-scr.github.io/GA/articles/GA.html