0

我正在使用 R 中的 genalg 包进行一些优化。有没有办法从过去几代人中获得最适合的染色体?我正在寻找其他“足够接近”的解决方案,但在我看来, rbga 对象中的所有信息都来自当前(最终)一代。

例如,我能否得到 100 条染色体在 400-500 代中返回最低评估值?

例子

编辑:我想我可以运行这个函数

rbga.bin(size=10, popSize=200, iters= , mutationChance=0.01)

对于迭代 = (400, 401, 402, ..., 498, 499, 500),并在每一代之后拉出最好的,但这会非常慢。

4

1 回答 1

1

您迭代的世代不会被rbga.bin()函数保存,因此在算法完成后,您无法在迭代 400-500 中获得最佳染色体。

但是,如果您在rbga.bin()通话中添加监听功能,则可以获得您想要的信息。因此,将此monitor函数包含到您的脚本中:

monitor <- function(obj) {
  if (obj$iter >= 400) {
    print(paste("GENERATION:", obj$iter))
    print(obj$population[which.min(obj$evaluations), ])
  }
}

并添加这样monitorFunc = monitor的:rbga.bin()

rbga.bin(size=10, popSize=200, iters=500, mutationChance=0.01, monitorFunc = monitor)

如果您愿意,您可以保存输出,而不仅仅是打印它。

于 2016-04-14T06:26:40.980 回答