PyGAD GA - 为什么解决方案和适应度数组大小不匹配?

PyGAD GA - why there is mismatch in solutions and fitness arrays size?

我正在为 GA 使用 pygad 来查找满足条件的解决方案组合。我有一个代码,它运行 15 代,有 40 个种群。 当 GA 停止 运行 时,解决方案数组的大小为 640,而适应度数组为 600。 我正在寻找一个单一的阵列,它可以为所有试验提供解决方案,旁边有适合度阵列。

问题:(a) 是否有任何命令可以将这两个组聚集在一起 (b) 如果没有这样的命令,那么为什么适应度函数大小小于“解决方案”,数组?

这是一个已在 PyGAD 2.16.1 中解决的错误。请考虑将库更新到最新版本。

pip install --upgrade pygad

这是一个示例,其中名为 solutions_fitness_arr 的单个数组连接每个解决方案末尾的适应度值。

import numpy
import pygad

function_inputs = [4,-2,3.5,5,-11,-4.7]
desired_output = 44

def fitness_func(solution, solution_idx):
    output = numpy.sum(solution*function_inputs)
    fitness = 1.0 / numpy.abs(output - desired_output)
    return fitness

ga_instance = pygad.GA(num_generations=15,
                       num_parents_mating=4,
                       fitness_func=fitness_func,
                       sol_per_pop=40,
                       num_genes=6,
                       save_solutions=True,
                       suppress_warnings=True)

ga_instance.run()

print(ga_instance.solutions.shape)
print(len(ga_instance.solutions_fitness))

solutions_fitness_arr = numpy.zeros(shape=(ga_instance.solutions.shape[0], ga_instance.solutions.shape[1]+1))
solutions_fitness_arr[:, :6] = ga_instance.solutions.copy()
solutions_fitness_arr[:, 6] = ga_instance.solutions_fitness