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 (将#修改为@)