博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
集体编程智慧(发现的一些代码问题)
阅读量:7019 次
发布时间:2019-06-28

本文共 735 字,大约阅读时间需要 2 分钟。

如果你在看集体编程智慧这本书,第五章的遗传算法时候,出现这样的错误:TypeError: object of type 'NoneType' has no len()。。

请注意下面这个函数:

 

  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]<domain[i][1]:
      return vec[0:i]+[vec[i]+step]+vec[i+1:]

 

若输入vec同时不满足两个if的条件,该函数就不会有return 语句。因此该函数就会默认返回None.所以就出现了上面的错误。

 

修改方法如下,在函数最后一句加上return vec,或者其他方法,总之要返回一个列表

 

  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]<domain[i][1]:
      return vec[0:i]+[vec[i]+step]+vec[i+1:]
    return vec

 

 

第六章,如果你的一些概率计算为0,可能是int除法的一些问题,即整数2/3=0,在相应变量前面乘以1。0就可以了。

转载于:https://www.cnblogs.com/Dzhouqi/p/3203766.html

你可能感兴趣的文章
IE8崩溃在CElement::GetUpdatedLayoutWithContext
查看>>
用PHP实现单向链表
查看>>
PIL中分离通道发生“AttributeError: 'NoneType' object has no attribute 'bands'”
查看>>
通过rails console执行sql语句
查看>>
调试+运行
查看>>
you-get下载视频
查看>>
centos 安装pecl
查看>>
[golang] Glide 包管理
查看>>
教程:VS2010 之TFS入门指南(转载)
查看>>
微信小程序
查看>>
spark 调优参数
查看>>
android中xml tools属性详解
查看>>
Volley全方位解析,带你从源码的角度彻底理解
查看>>
php优秀网摘
查看>>
GDI+ 双缓冲
查看>>
git https连接方式,记住密码
查看>>
编译安装与gcc编译器
查看>>
初始化参数(Initialization Parameter)知识合集 based on 11g
查看>>
opencv中 Mat矩阵申明形式
查看>>
C++三大特性之继承
查看>>