我试图使用Python库Pygmo2(https://esa.github.io/pagmo2/index.html)并行化一个优化问题。
据我所知,平行化可以通过一个群岛(在本例中是姆普岛)来实现。
作为一个最小的工作示例,来自官方网站的教程之一可以提供: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中实现吗?
关于这件事的文件还没有找到吗?还是我只是没有找到?
有人能启发我吗?
最佳答案
迁移框架尚未从pagmo1完全迁移到pagmo2。这里有一个长期开放的公共关系:
https://github.com/esa/pagmo2/pull/102
我们将在未来几个月内完成《移民框架》的实施工作,希望能在夏季初完成。