我正在尝试使用 Python 库Pygmo2 ( https://esa.github.io/pagmo2/index.html ) 来并行化优化问题。
据我了解,可以通过岛屿群岛(在本例中为mp_island )实现并行化。
作为一个最小的工作示例,来自官方网站的教程之一可以提供:https ://esa.github.io/pagmo2/docs/python/tutorials/using_archipelago.html
我提取了代码:
class toy_problem:
def __init__(self, dim):
self.dim = dim
def fitness(self, x):
return [sum(x), 1 - sum(x*x), - sum(x)]
def gradient(self, x):
return pg.estimate_gradient(lambda x: self.fitness(x), x)
def get_nec(self):
return 1
def get_nic(self):
return 1
def get_bounds(self):
return ([-1] * self.dim, [1] * self.dim)
def get_name(self):
return "A toy problem"
def get_extra_info(self):
return "\tDimensions: " + str(self.dim)
import pygmo as pg
a_cstrs_sa = pg.algorithm(pg.cstrs_self_adaptive(iters=1000))
p_toy = pg.problem(toy_problem(50))
p_toy.c_tol = [1e-4, 1e-4]
archi = pg.archipelago(n=32,algo=a_cstrs_sa, prob=p_toy, pop_size=70)
print(archi)
archi.evolve()
print(archi)
查看旧版本库的文档(http://esa.github.io/pygmo/documentation/migration.html),岛之间的迁移似乎是岛并行化模型的一个基本特征。此外,据我了解,没有它,像进化算法这样的优化算法就无法工作。
但是,在Pygmo2的文档中,我无法找到如何执行迁移。
它是在群岛中自动发生的吗?
它取决于所选的算法吗?
它还没有在Pygmo2中实现吗?
是否缺少有关此的文档,或者我只是没有找到它?
有人可以启发我吗?