我正在使用以下代码进行实验并开始学习如何使用 DE 优化更复杂的问题。我需要可以使用整数的优化器。
from scipy.optimize import differential_evolution
def objfun(x):
print('N')
return x[0]+2*x[1]**-4*x[2]
solution=differential_evolution(objfun,bounds=((1,10000),(1,200000),(1,50000)),popsize=0,maxiter=3,polish=False,disp=True)
设置popsize时出现问题。我得到的人口比预期的要多,如果我将它设置为 0,它会继续为第一个人口获取 10 个元素,然后为其他人口获取 5 个元素,直到达到最大值。
这是我用上面的代码得到的输出的一个例子
runfile('D:/PYTHON/untitled0.py', wdir='D:/PYTHON')
N
N
N
N
N
N
N
N
N
N
differential_evolution step 1: f(x)= 318.074
N
N
N
N
N
differential_evolution step 2: f(x)= 169.667
N
N
N
N
N
differential_evolution step 3: f(x)= 169.667
我真的不明白我做错了什么,至少我预计 popsize=0 会出错。此外,是否有任何其他隐藏参数来设置必须编辑的初始种群大小?
我还是个初学者,几周前我开始使用 python,所以我真的很感谢你的简单解释。
非常感谢所有花时间回答我的人。
史蒂夫