问题描述
Differential-Evolution 等全局优化更准确。其中,PyFDE 是最好的之一,因为 Cython 性能和 batch mode。但是像 L_bfgs_B 这样的局部优化要快得多。我想知道是否有混合方法?
PyFDE 示例:
import pyfde
from math import cos,pi
def fitness(p):
x,y = p[0],p[1]
val = 20 + (x**2 - 10*cos(2*pi*x)) + (y**2 - 10*cos(2*pi*y))
return -val
solver = pyfde.ClassicDE(fitness,n_dim=2,n_pop=40,limits=(-5.12,5.12))
solver.cr,solver.f = 0.9,0.45
best,fit = solver.run()
迭代器模式:
for best,fit in solver(n_it=10):
# custom logic here,breaking when desired
if condition:
break
我有一个过早的想法:(1)运行 PyFDE 以获得步骤 2 的可行初始值; (2) 运行 SciPy 的 fmin_l_bfgs_b 得到最终结果。我知道这种混合方法是不完美的,可能无法获得全局最小值。我的问题是(1)如何实现这个概念?例如,在 PyFDE 的迭代器模式中,获得第 2 步可行初始值的最佳/可能条件代码是什么? (2) 有没有更好的概念?
非常感谢任何帮助。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)