首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用simulated_annealing的pygmo2群岛只进化初始冠军

使用simulated_annealing的pygmo2群岛只进化初始冠军
EN

Stack Overflow用户
提问于 2018-03-17 04:51:37
回答 1查看 85关注 0票数 1

archipelago中使用pygmo2 simulated_annealing()算法时,我发现只有最初的冠军似乎是进化的,而所有其他的岛都保持不变。

考虑以下测试用例:

代码语言:javascript
复制
archi=pg.archipelago(n=1,algo=pg.de(),pop_size=10,prob=pg.rosenbrock(10),seed=32)
archi[0].get_population().get_f()
array([[ 1444075.45],
   [  769751.435],
   [ 1539132.29],
   [  867545.07],
   [ 1139524.14],
   [ 1294374.29],
   [ 1313308.78],
   [ 1402739.85],
   [ 1734627.42],
   [ 1329435.20]])

archi.evolve(); archi.wait()
archi[0].get_population().get_f()
array([[ 1444075.45],
   [  754109.13],
   [  946288.71],
   [  409444.50],
   [ 1139524.14],
   [ 1216399.25],
   [ 1313308.78],
   [ 1402739.85],
   [  834097.30],
   [  173612.94]])

但是如果我使用algo=pg.simulated_annealing()运行同样的命令,那么初始population_f为

代码语言:javascript
复制
array([[ 1408097.05],
   [ 1765715.34],
   [ 1547757.08],
   [ 1851529.02],
   [  440838.40],
   [ 1673630.76],
   [  867374.45],
   [ 2636693.48],
   [ 1809012.67],
   [  650619.19]])

在一次调用evolve()之后,

代码语言:javascript
复制
array([[  1408097.05],
   [  1765715.34],
   [  1547757.08],
   [  1851529.02],
   [  2.15709202],
   [  1673630.76],
   [  867374.45],
   [  2636693.48],
   [  1809012.67],
   [  650619.19]])

请注意,只有在开始时适应度最小的岛屿才是唯一进化的岛屿。这发生在不同的问题、不同的算法和不同数量的岛上。看起来像个虫子?

EN

回答 1

Stack Overflow用户

发布于 2018-03-18 02:57:52

这是从开发人员那里得到的:

这里没什么奇怪的。所有都是预期的行为。

上面详述的群岛和算法的使用有几个问题。

如果您将群岛与pg.de和pop_size=1一起使用,则会出现“错误发生”,因为de是一种基于种群的算法,至少需要4大小的种群。

当一个群岛在岛上引发错误时,您可以通过调用wait_check方法来检查这些异常。参见https://esa.github.io/pagmo2/docs/python/tutorials/using_archipelago.html#managing-exceptions。如果你这样做了,你会发现这个例外很可能是“至少需要4个人……”

模拟退火不是基于群体的,正如文献所述,它只在群体中进化一个选定的个体。这就是上面的代码所显示的。

“注意,只有适应度最小的岛”应该是“注意,只有适应度最小的染色体”->,这就是sa应该做的事情。

“大多数适应度向量使用pg.de()改变”,->也是de的预期行为。因为用户只进化一代(使用默认参数)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49329324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档