这个问题非常简单,也许很愚蠢,但我们开始吧:
如此处(https://esa.github.io/pagmo2/docs/python/algorithms/py_algorithms.html)
如果你进化一个单一的群体,你可以得到你的 algo.evolve() 调用的日志,如下所示:
from pygmo import *
algo = algorithm(de1220(gen = 500))
algo.set_verbosity(100)
prob = problem(rosenbrock(10))
pop = population(prob, 20)
pop = algo.evolve(pop)
uda = algo.extract(de1220)
uda.get_log()
[(1, 20, 285652.7928977573, 0.551350234239449, 0.4415510963067054, 16, 43.97185788345982, 2023791.5123259544), ...
如果您利用 pygmo 的力量来使用群岛并行进化,您将执行以下操作:
archi = archipelago(n = 8, algo = algo, prob = rosenbrock(5), pop_size = 10, seed = 32)
archi.evolve()
然而,群岛没有 extract() 方法(就像算法那样),也没有 get_algorithm() 方法(就像岛屿一样),也没有任何其他在文档中足够明显的东西(至少对我来说)可以完成这项工作。 ..
archi.extract(de1220)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'archipelago' object has no attribute 'extract'
archi.get_algorithm()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'archipelago' object has no attribute 'get_algorithm'
那么,如何将输出algo.set_verbosity(100)
放入文件而不仅仅是标准输出?
而且,一旦到了这里,有没有办法让它按岛组织而不是交错,因为它打印在标准输出上?
(我在运行每个岛时都会在到达给定触发器时打印报告,但如果所有内容都已存储,则应该可以对其进行排序)
谢谢!