如何解决NEAT 错误 - AttributeError: 'tuple' 对象没有属性 'connections'
我目前正在尝试创建一个 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'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。