Только сегодня я сделал то же самое!: D
С той разницей, что это сработало для меня ....
Вы можете взглянуть на следующий репозиторий на github.https://github.com/rsk2327/NEAT_FlappyBird
Я не думаю, что он больше не обновляется.но в этом нет необходимости.Единственное, что мне пришлось изменить в его коде, это удалить все: "/ home / roshan / Documents / FlappyBird /".Вы можете просто оставить их и поместить все ресурсы в одну папку.
Кроме того, я изменил дамп победителя следующим образом:
#outputDir = 'bestGenomes/'
#os.chdir(outputDir)
#serialNo = len(os.listdir(outputDir))+1
#outputFile = open(str(serialNo)+'_'+str(int(MAX_FITNESS))+'.p','wb' )
outputFile = 'bestGenome/winner.p'
pickle.dump(winner, outputFile)
Это потому, что в первые несколько прогонов я сохранял каждый геном, а смена директории все испортило.
Кроме того, он работает нормально.как только он заработает, вы можете просто заменить игру или весь eval.
Иначе, взгляните на примеры Neat-python.В примере с минимальным развитием все, что им нужно, это следовать коду, и он работает для каждого генома.
def eval_genomes(genomes, config):
for genome_id, genome in genomes:
genome.fitness = 4.0
net = neat.nn.FeedForwardNetwork.create(genome, config)
for xi, xo in zip(xor_inputs, xor_outputs):
output = net.activate(xi)
genome.fitness -= (output[0] - xo[0]) ** 2
Хотя я должен сказать, что для меня это выглядит функционально одинаково.Так что, вероятно, что-то не так в цикле while, не так ли?