所以我一直在研究我刚才写的这个非常糟糕的python代码 作为一种简单的优化方法,我尝试使用PyPy而不是python 2.7但是在尝试运行它时,PyPy给了我一个超出范围错误的列表索引,而python运行代码就好了。
令人讨厌的代码位于下方 -
for front_no in xrange(1, self.no_of_fronts + 1):
temp = []
for member in self.population_members:
if member.front == front_no:
temp.append(member)
if(len(temp) == 1):
temp[0].crowding_distance = float('inf')
else:
for member in temp:
member.crowding_distance = 0
for y in xrange(0, p.number_of_objectives):
temp.sort(key=lambda x: x.objective_function_values[y])
temp[0].crowding_distance = float("inf")
temp[len(temp) - 1].crowding_distance = float("inf")
if temp[0].gene == temp[-1].gene:
for i in xrange(1, len(temp) - 1):
temp[i].crowding_distance = 0
temp[0].crowding_distance = float("inf")
具体是导致问题的原因,但是在那一点上没有理由将temp变为空。