我正在用pygad用python语言编写一个遗传算法(GA),但我一直收到这个错误:

TypeError:无法将序列乘以‘GA’类型的非整型

以下是我的全部代码:

import pygad
import numpy

print(pygad.__version__)

inputs = [0.4,1,0,7,8,1,2,3,4,5,6,7,8,9,0,12,23,34,45,5667,67,78,95678,456,23,234,456,9,0,9,54,213,]
desired_output = 32

def fitness_func(solution, solution_idx, ga_instance):
    output = numpy.sum(solution*inputs) # error here
    fitness = 1.0 / (numpy.abs(output - desired_output) + 0.000001)

    return fitness

ga_instance = pygad.GA(num_generations=100,
                       sol_per_pop=10,
                       num_genes=len(inputs),
                       num_parents_mating=2,
                       fitness_func=fitness_func,
                       mutation_type="random",
                       mutation_probability=0.6)

ga_instance.run()

ga_instance.plot_fitness()

*输入只是一串随机数字

我使用的是pygad 3.0.0和python3.11.3

我曾try 过这样做:

output = numpy.sum(int(solution)*inputs)

也只是将解决方案参数替换为预期输出(32),但当我这样做时,AI不会做任何事情.

推荐答案

就像Anony Mous在 comments 中所说的,答案是:

"好的,我认为发生的是pygad.GA没有正确传递任何一个解决方案.所以请判断您的FIFICATION_FUNC函数,确保它的参数是正确的."(Anony Mous)

以下是代码的工作部分:

import pygad
import numpy

print(pygad.__version__)

inputs = [0.4,1,0,7,8,1,2,3,4,5,6,7,8,9,0,12,23,34,45,5667,67,78,95678,456,23,234,456,9,0,9,54,213,]
desired_output = 32

def fitness_func(ga_instance, solution, solution_idx): # error was here
    output = numpy.sum(solution*inputs)
    fitness = 1.0 / (numpy.abs(output - desired_output) + 0.000001)

    return fitness

ga_instance = pygad.GA(num_generations=100,
                       sol_per_pop=10,
                       num_genes=len(inputs),
                       num_parents_mating=2,
                       fitness_func=fitness_func,
                       mutation_type="random",
                       mutation_probability=0.6)

ga_instance.run()

ga_instance.plot_fitness()

非常感谢!

Python相关问答推荐

通过优化空间在Python中的饼图中添加标签

使用新的类型语法正确注释ParamSecdecorator (3.12)

为什么符号没有按顺序添加?

从groupby执行计算后创建新的子框架

如何在Python数据框架中加速序列的符号化

运输问题分支定界法&

如何将多进程池声明为变量并将其导入到另一个Python文件

导入...从...混乱

try 检索blob名称列表时出现错误填充错误""

在单次扫描中创建列表

Maya Python脚本将纹理应用于所有对象,而不是选定对象

下三角形掩码与seaborn clustermap bug

如何杀死一个进程,我的Python可执行文件以sudo启动?

OpenGL仅渲染第二个三角形,第一个三角形不可见

根据客户端是否正在传输响应来更改基于Flask的API的行为

Python 3试图访问在线程调用中实例化的类的对象

你能把函数的返回类型用作其他地方的类型吗?'

Regex用于匹配Python中逗号分隔的AWS区域

具有不匹配列的2D到3D广播

try 在单个WITH_COLUMNS_SEQ操作中链接表达式时,使用Polars数据帧时出现ComputeError