微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NEAT 算法停留在特定的适应度值

如何解决NEAT 算法停留在特定的适应度值

我有一个作业,必须使用 NEAT-Python 库创建一个算法。输入是一个带有 1 个输出的 4 输入真值表,它是一个布尔函数(我使用的是 XOR)。这是适应度函数

def eval_genomes(genomes,config):
    for genome_id,genome in genomes:
        genome.fitness = 16
        net = neat.nn.FeedForwardNetwork.create(genome,config)
        for xi,xo in zip(inputs,outputs):
            output = net.activate(xi)
            genome.fitness -= (output[0] - xo[0])**2

我是直接从图书馆的文档 (https://neat-python.readthedocs.io/en/latest/xor_example.html) 中得到的。然而,大多数情况下,算法会陷入特定的适应度值。例如,它没有达到 15.999...(这是理想的适应度,因为这是真值表中输入组合的数量),它停留在 11.999 并且不会从那里改善,尽管我可以看到人口进化。如果我更改它试图预测的布尔函数,它可能会卡在 14.999 中,但它通常会卡住。有人知道会发生什么吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。