我正在尝试优化一个复杂的模型,该模型需要在远程计算机上运行几个小时。无法在远程计算机上设置GA脚本。因此,我正在考虑使用以下方法:
但是,我无法找到任何流行的R GA函数来支持这种“逐步”方法。
此外,当我尝试使用GA :: ga(我的首选算法,因为它似乎被最好地记录和维护)对这种“逐步”方法进行小测试时,我没有得到一致的结果。
例如...
library(GA)
Rastrigin <- function(x1, x2) 20 + x1^2 + x2^2 - 10*(cos(2*pi*x1) + cos(2*pi*x2))
fit <- function(x) -Rastrigin(x[1], x[2])
suggestedSol <- matrix(c(rep(0,10), seq(0.5, 5, 0.5)),
nrow = 10, ncol = 2, byrow = FALSE)
在这里,我向GA :: ga提供初始种群和seed = 333
,而我只经营了3代。
GA1 <- ga(type = "real-valued",
fitness = fit,
lower = c(-5, -5),
upper = c(5, 5),
suggestions = suggestedSol,
popSize = 10, maxiter = 3, seed = 333)
iter3 <- GA1@population
iter3
[,1] [,2]
[1,] 0 4.648199
[2,] 0 1.244214
[3,] 0 1.000000
[4,] 0 3.927499
[5,] 0 1.087419
[6,] 0 1.917443
[7,] 0 1.076341
[8,] 0 1.785816
[9,] 0 1.995138
[10,] 0 1.041109
然后在这里我做同样的事情,但是只运行到第二代:
GA2 <- ga(type = "real-valued",
fitness = fit,
lower = c(-5, -5),
upper = c(5, 5),
suggestions = suggestedSol,
popSize = 10, maxiter = 2, seed = 333)
iter2 <- GA2@population
...然后,我将保存的第二代用作新运行的初始种群,只运行了另一代(到理论上的第三代)。
GA3 <- ga(type = "real-valued",
fitness = fit,
lower = c(-5, -5),
upper = c(5, 5),
suggestions = iter2,
popSize = 10, maxiter = 2, seed = 333)
stepwise3 <- GA3@population
stepwise3
[,1] [,2]
[1,] 0 2.113191
[2,] 0 1.007642
[3,] 0 1.072837
[4,] 0 1.000000
[5,] 0 1.141010
[6,] 0 3.246744
[7,] 0 1.079777
[8,] 0 1.946409
[9,] 0 1.087419
[10,] 0 1.769360
iter3
和stepwise3
是不相同的,即使seed
设置为相同,并且理论上它们来自同一上一代。我想念什么?如果这不起作用,那么如何将这种“逐步”方法应用于更广泛的问题?