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

python中的混合全局-局部优化:结合Differential-Evolution (PyFDE)和L_bfgs_B?

如何解决python中的混合全局-局部优化:结合Differential-Evolution (PyFDE)和L_bfgs_B?

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 举报,一经查实,本站将立刻删除。