我正在使用scipy.optimize.minimize来找到对所使用的初始猜测相当敏感的 4D 函数的最小值。如果我稍微改变它,解决方案将发生很大变化。
SO中已经有许多与此类似的问题(例如:1、2、3),但没有真正的答案。
在我的一个老问题中,zunzun.com 网站(显然不再在线)的一位开发人员解释了他们是如何做到这一点的:
Zunzun.com 使用差分进化遗传算法 (DE) 来查找初始参数估计,然后将其传递给 scipy 中的 Levenberg-Marquardt 求解器。DE 本身实际上并没有用作全局优化器,而是用作“初始参数猜测器”。
我发现最接近这个算法的是这个答案,其中一个for
块用于多次调用最小化函数,并带有随机初始猜测。这会生成多个最小化的解决方案,最后选择最好的(最小值)一个。
有没有类似于 zunzun dev 描述的已经在 Python 中实现的东西?