在使用pygmo2
simulated_annealing()
算法时archipelago
,我发现似乎只有最初的冠军进化了,其他所有岛屿都保持不变。
考虑以下测试用例:
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 为
array([[ 1408097.05],
[ 1765715.34],
[ 1547757.08],
[ 1851529.02],
[ 440838.40],
[ 1673630.76],
[ 867374.45],
[ 2636693.48],
[ 1809012.67],
[ 650619.19]])
成为,在一次调用之后evolve()
,
array([[ 1408097.05],
[ 1765715.34],
[ 1547757.08],
[ 1851529.02],
[ 2.15709202],
[ 1673630.76],
[ 867374.45],
[ 2636693.48],
[ 1809012.67],
[ 650619.19]])
请注意,只有开始时适应度最小的岛才是唯一进化的岛。这发生在不同的问题、不同的算法和不同数量的岛屿上。看起来像一个错误?