集体智慧编程第5章,遗传算法出现schedulecost函数中“NoneType”has no len()

自己对照教材输入,遗传算法中有时出现schedulecost函数中“NoneType”has no len(),下载了教程源代码,也是这样的,经一天研究,终于发现了bug之处。因为geneticoptimize中的mutate可能返回为空数据,条件是random.random()>=0.5,且vec[i](vec为9的时候)>=domain[i][1]。解决办法:

def mutate(vec):
    i=random.randint(0,len(domain)-1)
    if random.random()<0.5 and vec[i]>domain[i][0]:
      return vec[0:i]+[vec[i]-step]+vec[i+1:]
    elif vec[i]      return vec[0:i]+[vec[i]+step]+vec[i+1:]
    else:
      return vec

你可能感兴趣的:(集体智慧编程第5章,遗传算法出现schedulecost函数中“NoneType”has no len())