python - NEAT 错误 - AttributeError:“元组”对象没有属性“连接”
问题描述
我目前正在尝试创建一个 NEAT 算法来解决 FlappyBird,但是在运行我的代码时遇到了一个错误(见标题)。目前我已经设置了我的run
功能和我的eval_genomes
功能。我已经简化了它们以删除这些pygame
东西,并试图将其保留在neat-python
相关位上。
我知道有一些方法可以让这变得更好,但我可以帮助找到如何解决我在下面看到的错误。
该错误似乎源于该neat-python
模块,但我已将其卸载并重新安装,因此该模块没有任何问题。我已经运行了别人的代码并且有工作,所以模块似乎工作正常。
def run(config_path):
config = neat.config.Config(neat.DefaultGenome, neat.DefaultReproduction,
neat.DefaultSpeciesSet, neat.DefaultStagnation,
config_path)
p = neat.Population(config)
p.add_reporter(neat.StdOutReporter(True))
stats = neat.StatisticsReporter()
p.add_reporter(stats)
winner = p.run(eval_genomes,20)
def eval_genomes(genomes, config):
run = True
game = Game(WIN)
nets = []
ge = []
birds = []
for g in genomes:
net = neat.nn.FeedForwardNetwork.create(g, config)
nets.append(net)
birds.append(Bird(WIN))
g.fitness = 0
ge.append(g)
while run:
if len(birds) = 0:
run = False
break
for x, bird in enumerate(birds):
bird.move()
ge[x].fitness += 0.1
output = nets[x].activate((bird.y,
abs(bird.y - game.pipes[pipe_ind].height),
abs(bird.y - game.pipes[pipe_ind].bottom)))
if output[0] > 0.5:
bird.jump()
for x, bird in enumerate(birds):
if game.check_collisions(bird):
ge[x].fitness -= 1
birds.pop(x)
nets.pop(x)
ge.pop(x)
if game.pipe_passed(birds[0]):
for g in ge:
g.fitness += 5
game.update() # Move all the other pieces
Traceback (most recent call last):
File "/Users/Ali/Documents/Coding Projects/Python/ToDo/Flappy-Bird-AI/Main.py", line 106, in <module>
run(config_path)
File "/Users/Ali/Documents/Coding Projects/Python/ToDo/Flappy-Bird-AI/Main.py", line 99, in run
winner = p.run(eval_genomes,20)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/neat/population.py", line 89, in run
fitness_function(list(iteritems(self.population)), self.config)
File "/Users/Ali/Documents/Coding Projects/Python/ToDo/Flappy-Bird-AI/Main.py", line 34, in eval_genomes
net = neat.nn.FeedForwardNetwork.create(g, config)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/neat/nn/feed_forward.py", line 33, in create
connections = [cg.key for cg in itervalues(genome.connections) if cg.enabled]
AttributeError: 'tuple' object has no attribute 'connections'
解决方案
推荐阅读
- node.js - 是否可以从我的 Lambda 函数中的 CloudWatch 事件日志中获取“实例名称”......?
- reactjs - 文件上传后如何清除 React Dropzone 组件中的 Dropzone?
- angular - 使用构造函数参数创建动态组件
- javascript - npm 错误!Windows 10 上的代码 EPERM 和 errno -4048
- php - 如何检查第三列是否与PHP中的正则表达式数字匹配
- java - REST:处理请求中同名的矩阵样式和模板样式参数
- c - 通过C中的udp套接字传递结构
- java - 滑动窗口算法(查找加起来为特定总和的最大连续数字)
- reactjs - 使用 jsx 编译安装 webpack 时出错
- python - 如何使用 pyinstaller 修复将 py 转换为 exe 的编码错误