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

逆适应度遗传算法

如何解决逆适应度遗传算法

我一直在编写一个使用遗传算法训练神经网络的程序。

问题在于概率。我的 getRoulette 函数应该以某种方式缩放概率,因此最高的适应度应该具有最大的间隔 [start,end] 但这段代码不起作用。我想将它们从 [0,1] 缩放。

def getRoulette(parents):
roulette = dict()

sumfitness = 0
for fitness in parents.values():
    sumfitness += fitness

start = 0
for weights,fitness in parents.items():
    print(start,start + (fitness / sumfitness))
    roulette[weights] = [start,start + (fitness / sumfitness)]
    start = (fitness / sumfitness) + 0.000001

return roulette

我当前的间隔输出如下所示:

0 0.100048480494371
0.100049480494371 0.20006139972080544
0.10001291922643446 0.19979746259909176
0.0997855433726573 0.1998323366204972
0.10004779324783991 0.20001657881108587
0.09996978556324597 0.20001657881108587
0.10004779324783991 0.20009458649567982
0.10004779324783991 0.20001657881108587
0.09996978556324597 0.20001657881108587
0.10004779324783991 0.2000781060365257

这是错误的,因为最后一个应该是1。

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