如何为Python全局最小值求解选择适配算法及相关参考资源?
全局优化算法选型解答
有没有专门的最小化问题算法选型速查表?
目前没有类似scikit-learn机器学习算法选型速查表那样的、被广泛认可的通用最小化问题选型工具,但行业内有成熟的决策逻辑可以直接参照。
针对你的场景的算法选择建议
你的约束条件非常明确:4个输入变量(属于低维优化范畴)、变量有已知边界、函数计算耗时较长,按照适配度从高到低排序:
- 贝叶斯优化
它并非只适用于机器学习代价函数,是通用的黑盒全局优化算法,设计初衷就是解决低维、有边界、函数调用成本高的优化问题,刚好完全匹配你的所有约束。它会通过前序的函数计算结果拟合目标函数的分布,有方向地选择下一个评估点,大幅减少无效的函数调用,是你的首选方案。 - 凸函数场景下可选择带边界约束的局部优化器
如果你能确定目标函数是凸函数,那局部最小值就是全局最小值,可以直接调用scipy.optimize.minimize的L-BFGS-B方法,收敛速度比贝叶斯优化更快。 - 不推荐选择的算法
basinhopping:属于随机跳步类的全局优化算法,需要极多的函数调用次数才能收敛,完全不适合你的计算耗时较长的场景scipy.optimize.minimize下的普通无梯度/有梯度局部优化器:仅能找到初始点附近的局部最小值,无法保证全局最优,仅适合凸函数场景
内容的提问来源于stack exchange,提问作者user733733
相关产品推荐
相关产品推荐

