逆适应度遗传算法

问题描述

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

问题在于概率。我的 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 (将#修改为@)