R - genalg 包:从上一代获得最适合
R - genalg package: Get Fittest From Past Generation
我正在使用 R 中的 genalg 包进行一些优化。有什么方法可以从过去几代中获得最适合的染色体吗?我正在寻找其他 "close enough" 解决方案,但在我看来,rbga 对象中的所有信息都来自当前(最后)一代。
比如我能否得到第400-500代中评价值最低的100条染色体?
编辑:我想我可以 运行 函数
rbga.bin(size=10, popSize=200, iters= , mutationChance=0.01)
for iterations = (400, 401, 402, ..., 498, 499, 500),并在每一代之后拉出最好的,但这会非常慢。
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), ])
}
}
并在 rbga.bin()
中添加 monitorFunc = monitor
,如下所示:
rbga.bin(size=10, popSize=200, iters=500, mutationChance=0.01, monitorFunc = monitor)
如果愿意,您可以保存输出而不仅仅是打印它。
我正在使用 R 中的 genalg 包进行一些优化。有什么方法可以从过去几代中获得最适合的染色体吗?我正在寻找其他 "close enough" 解决方案,但在我看来,rbga 对象中的所有信息都来自当前(最后)一代。
比如我能否得到第400-500代中评价值最低的100条染色体?
编辑:我想我可以 运行 函数
rbga.bin(size=10, popSize=200, iters= , mutationChance=0.01)
for iterations = (400, 401, 402, ..., 498, 499, 500),并在每一代之后拉出最好的,但这会非常慢。
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), ])
}
}
并在 rbga.bin()
中添加 monitorFunc = monitor
,如下所示:
rbga.bin(size=10, popSize=200, iters=500, mutationChance=0.01, monitorFunc = monitor)
如果愿意,您可以保存输出而不仅仅是打印它。