微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 DEAP 1.3 时出错:mutPolynomialBounded()

如何解决使用 DEAP 1.3 时出错:mutPolynomialBounded()

在我的优化中运行 mutpolynomialBounded 的错误

我的代码

print('MinVals',MinVals)
print('MaxVals',MaxVals)        
toolBox.register("mate",tools.cxSimulatedBinaryBounded,low=MinVals,up=MaxVals,eta=20.)
toolBox.register("mutate",tools.mutpolynomialBounded,eta=40.)
toolBox.register("select",tools.selNSGA2)
[...]
for Mutant in Offspring:
    if random.random() < MUTPB:
        print ('Mutant',Mutant)
        toolBox.mutate(Mutant)
        del Mutant.fitness.values

几代后给予:

MinVals [7.9,7.7,20.0,3.5,3.0,8.0,0.0,0.0]
MaxVals [8.1,8.3,60.0,4.5,4.0,12.0,0.5,1.0]
    
Generation   1
('Mutant',[8.083703848590838,8.239680639018465,34.76921146679101,3.93770884762232,3.84484135043615,8.268765311082381,0.04670044781780919,0.3362407430103522])
Traceback (most recent call last):

  File "<ipython-input-261-aee1f32cae8a>",line 1,in <module>
    runfile('/home/brunsj/05_Kurzprojekte/ML_Batchmeshing/Source/BatchMesh_DEAP_parallel.py',wdir='/home/brunsj/05_Kurzprojekte/ML_Batchmeshing/Source')

  File "/home/brunsj/.conda/envs/spyder/lib/python2.7/site-packages/spyder/utils/site/sitecustomize.py",line 705,in runfile
    execfile(filename,namespace)

  File "/home/brunsj/.conda/envs/spyder/lib/python2.7/site-packages/spyder/utils/site/sitecustomize.py",line 94,in execfile
    builtins.execfile(filename,*where)

  File "/home/brunsj/05_Kurzprojekte/ML_Batchmeshing/Source/BatchMesh_DEAP_parallel.py",line 487,in <module>
    DEAP_Meshing()

  File "/home/brunsj/05_Kurzprojekte/ML_Batchmeshing/Source/BatchMesh_DEAP_parallel.py",line 174,in DEAP_Meshing
    toolBox.mutate(Mutant)

TypeError: mutpolynomialBounded() takes exactly 5 arguments (4 given)

我不知道这里发生了什么......

如果我使用 toolBox.register("mutate",tools.mutGaussian,mu=0,sigma=1,indpb=0.2),它会按预期运行

解决方法

简单错误:我错过了 toolbox.register("mutate",tools.mutPolynomialBounded,low=MinVals,up=MaxVals,eta=40.) 中的参数 indpb

使用 toolbox.register("mutate",eta=40.,indpb=1) 运行。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。