2019-01-23
阅读量:
1878
循环之后,字典的长度为
0.0000
0
3
关注作者
收藏
我在Python中实现了TSP的遗传算法。为了计算下一代,我实现了这个功能:
def nextGen(currPop, distDict, numChrome, mutRate):
genFit = {}
for i in currPop:
tmp = fitness(i, distDict)
genFit[tuple(i)] = tmp
print(tmp)
genFitCum = dictCum(genFit)
print(len(genFit), len(currPop))
parentSelection = parents(genFitCum, numChrome)
children = breedPopulation(parentSelection, numChrome)
nextGeneration = mutatePop(children, mutRate)
return nextGeneration
distDict是各个城市之间距离的字典。 numChrome是染色体的数量。 mutRate是变异率。
现在,在第一代之后,我得到了不应该存在的越界错误,因为它全部在循环中。
问题是currPop的长度是常数(numChrome)但genFit的长度减少。这是在循环运行numChrome次之后。
我想也许我的实现是在磁盘空间上囤积。我尝试使用del但是徒劳无功。






推荐帖子
0条评论
0条评论
0条评论