我正在尝试创建功能,现在我的代码被卡在一个点上,给出此错误:
in stochasticUniversalSampling
if fitness_prob[j] > points[i]:
KeyError: 0
我正在尝试为每个染色体分配长度与其适应度相等的范围,并在前一个染色体的终点之后指定一个起点(例如,第一个染色体0-1.53,第二个染色体1.54-2.26,第三个染色体2.27- 3.42等)。选择范围包含标记的染色体(请注意,一条染色体可能具有2个标记,在这种情况下,它会被选择两次)。
city.txt
5
1 823170 415922
2 793699 274913
3 981665 218777
4 878910 431320
5 910125 405907
答案 0 :(得分:1)
创建fitness_prob
时,您将self.population
中的值用作键。但是在while
循环中,当应该使用值时,您将fitness_prob
的索引用作键。更改:
if fitness_prob[j] > points[i]:
到
if fitness_prob[self.population[j]] > points[i]: