我正在尝试创建一个功能,现在我的代码在某一点上被卡住了,给出了这个错误:
in stochasticUniversalSampling
if fitness_prob[j] > points[i]:
KeyError: 0
我试图为每个染色体分配一个与其适合度相等的长度范围和一个在前一条染色体终点之后的起点(例如,第一条染色体0-1.53,第二条染色体1.54-2.26,第三条染色体2.27-3.42,等等)。选择其范围包含一个标记的染色体(请注意,一个染色体可能有两个标记,在这种情况下会选择两次)。
city.txt
5
1 823170 415922
2 793699 274913
3 981665 218777
4 878910 431320
5 910125 405907
发布于 2019-10-18 03:54:47
在创建fitness_prob
时,您使用来自self.population
的值作为键。但是在while
循环中,您使用的是fitness_prob
的索引作为键,而实际上您应该使用这些值。更改:
if fitness_prob[j] > points[i]:
至
if fitness_prob[self.population[j]] > points[i]:
https://stackoverflow.com/questions/58439812
复制相似问题