R - genalg套餐:从上一代变得最适合

时间:2016-01-11 08:17:44

标签: r algorithm genetic

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

例如,我可以让100条染色体在400 - 500年代中返回最低评估值吗?

Example

编辑:我想我可以运行该功能

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

对于迭代次数=(400,401,402,...,498,499,500),并在每增加一代之后拉出最佳值,但这将非常慢。

1 个答案:

答案 0 :(得分: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)

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