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
我正在为 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